LCD decompile
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# H8/536 ROM Decompiler
|
||||
|
||||
The ROM used is from a SONY RCP-TX7 Camera Panel. Some of the code in this repo may be bias to the functions of that particular use case with the H8/536.
|
||||
|
||||
This repo now includes a standalone Python helper for the H8/536 ROM image:
|
||||
|
||||
```powershell
|
||||
@@ -33,6 +35,7 @@ To turn the structured decompile output into conservative C-like pseudocode:
|
||||
- Tracks SCI setup writes and can infer baud rates from SMR/BRR when `--clock-hz` is supplied.
|
||||
- Flags/manual-annotates TEMP-register access ordering for FRT and A/D 16-bit peripheral registers.
|
||||
- Scans unreached ROM ranges for ASCII strings and pointer-table candidates.
|
||||
- Scans likely LCD/menu text records, groups display-text regions, and reports literal/near matches for terms such as `CONNECT`.
|
||||
- Emits function summaries and a direct-call graph in JSON, with optional Graphviz DOT output.
|
||||
- Tracks conservative per-basic-block register/control-register dataflow in JSON and comments known value changes.
|
||||
- Discovers RAM/external/global symbols from memory references and pointer tables, including read/write counts and xrefs.
|
||||
@@ -40,6 +43,7 @@ To turn the structured decompile output into conservative C-like pseudocode:
|
||||
- Adds Appendix A cycle estimates to JSON and can append them to ASM comments.
|
||||
- Summarizes straight-line block timing and backward-branch loop timing when requested.
|
||||
- Handles the E-clock transfer instructions `MOVFPE` and `MOVTPE`.
|
||||
- Recognizes likely LCD E-clock access routines at `H'F200`/`H'F201`, including busy-flag polling and data/control writes.
|
||||
- Generates a separate C-like pseudocode view from the JSON, preserving labels, calls, branches, register names, inferred symbols, metadata comments, optional cycle notes, and simple structured `if`/`do while` patterns.
|
||||
|
||||
The generated listing is written to:
|
||||
@@ -97,6 +101,8 @@ python h8536_pseudocode.py --help
|
||||
- `h8536/dataflow.py`: conservative register/control-register value tracking.
|
||||
- `h8536/symbols.py`: RAM/external/global symbol discovery from references and data tables.
|
||||
- `h8536/indirect.py`: indirect call/jump and pointer-table dispatch hints.
|
||||
- `h8536/lcd_text.py`: LCD/menu text record scanning, fuzzy search, and text xrefs.
|
||||
- `h8536/lcd_driver.py`: LCD E-clock access and busy-poll recognizer.
|
||||
- `h8536/timing.py`: block and loop cycle summaries.
|
||||
- `h8536/sci.py`: SCI setup tracking and baud inference.
|
||||
- `h8536/peripheral_access.py`: FRT/A-D TEMP-register access analysis.
|
||||
|
||||
Reference in New Issue
Block a user