romdevtools 0.30.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +12 -3
- package/CHANGELOG.md +70 -13
- package/README.md +2 -1
- package/examples/gb/templates/tile_engine.c +1 -1
- package/examples/gbc/templates/tile_engine.c +1 -1
- package/examples/genesis/templates/two_plane_parallax.c +4 -4
- package/examples/nes/templates/tile_engine.c +1 -1
- package/package.json +3 -1
- package/src/analysis/analyze.js +263 -0
- package/src/analysis/decompile.js +108 -0
- package/src/analysis/decompiler/sleigh/6502.cspec +34 -0
- package/src/analysis/decompiler/sleigh/6502.ldefs +33 -0
- package/src/analysis/decompiler/sleigh/6502.pspec +16 -0
- package/src/analysis/decompiler/sleigh/6502.sla +3414 -0
- package/src/analysis/decompiler/sleigh/65816-snes.pspec +249 -0
- package/src/analysis/decompiler/sleigh/65816.cspec +17 -0
- package/src/analysis/decompiler/sleigh/65816.ldefs +15 -0
- package/src/analysis/decompiler/sleigh/65816.sla +23670 -0
- package/src/analysis/decompiler/sleigh/65c02.sla +4683 -0
- package/src/analysis/decompiler/sleigh/68000.cspec +67 -0
- package/src/analysis/decompiler/sleigh/68000.ldefs +68 -0
- package/src/analysis/decompiler/sleigh/68000.pspec +9 -0
- package/src/analysis/decompiler/sleigh/68000_register.cspec +118 -0
- package/src/analysis/decompiler/sleigh/68040.sla +81693 -0
- package/src/analysis/decompiler/sleigh/ARM.ldefs +377 -0
- package/src/analysis/decompiler/sleigh/ARM4t_le.sla +53758 -0
- package/src/analysis/decompiler/sleigh/ARM_v45.cspec +209 -0
- package/src/analysis/decompiler/sleigh/ARM_v45.pspec +40 -0
- package/src/analysis/decompiler/sleigh/ARMt_v45.pspec +43 -0
- package/src/analysis/decompiler/sleigh/HuC6280.cspec +67 -0
- package/src/analysis/decompiler/sleigh/HuC6280.ldefs +18 -0
- package/src/analysis/decompiler/sleigh/HuC6280.pspec +150 -0
- package/src/analysis/decompiler/sleigh/HuC6280.sla +7524 -0
- package/src/analysis/decompiler/sleigh/sm83.cspec +70 -0
- package/src/analysis/decompiler/sleigh/sm83.ldefs +29 -0
- package/src/analysis/decompiler/sleigh/sm83.pspec +19 -0
- package/src/analysis/decompiler/sleigh/sm83.sla +7695 -0
- package/src/analysis/decompiler/sleigh/z80.cspec +122 -0
- package/src/analysis/decompiler/sleigh/z80.ldefs +57 -0
- package/src/analysis/decompiler/sleigh/z80.pspec +43 -0
- package/src/analysis/decompiler/sleigh/z80.sla +20518 -0
- package/src/analysis/decompiler/wasm/decompile.js +2 -0
- package/src/analysis/decompiler/wasm/decompile.wasm +0 -0
- package/src/analysis/rizin.js +129 -0
- package/src/analysis/wasm/rizin.js +6032 -0
- package/src/analysis/wasm/rizin.wasm +0 -0
- package/src/http/routes.js +1 -1
- package/src/http/skill-doc.js +1 -1
- package/src/mcp/tools/cart-parts.js +5 -2
- package/src/mcp/tools/disasm.js +32 -5
- package/src/mcp/tools/font-map.js +3 -3
- package/src/mcp/tools/index.js +2 -2
- package/src/mcp/tools/project.js +1 -1
- package/src/mcp/tools/reinject.js +1 -1
- package/src/mcp/tools/symbols.js +10 -4
- package/src/mcp/tools/trace-vram-source.js +1 -1
- package/src/mcp/tools/watch-memory.js +1 -1
- package/src/platforms/_guides/ROMHACKING_PLAYBOOK.md +48 -3
- package/src/platforms/atari2600/MENTAL_MODEL.md +6 -0
- package/src/platforms/atari7800/MENTAL_MODEL.md +6 -0
- package/src/platforms/c64/MENTAL_MODEL.md +6 -0
- package/src/platforms/gb/MENTAL_MODEL.md +6 -0
- package/src/platforms/gb/lib/c/README.md +1 -1
- package/src/platforms/gba/MENTAL_MODEL.md +7 -1
- package/src/platforms/gbc/MENTAL_MODEL.md +6 -0
- package/src/platforms/gbc/lib/c/README.md +1 -1
- package/src/platforms/genesis/MENTAL_MODEL.md +8 -2
- package/src/platforms/genesis/TROUBLESHOOTING.md +2 -2
- package/src/platforms/genesis/lib/wram.s +1 -1
- package/src/platforms/gg/MENTAL_MODEL.md +6 -0
- package/src/platforms/lynx/MENTAL_MODEL.md +6 -0
- package/src/platforms/msx/MENTAL_MODEL.md +6 -0
- package/src/platforms/nes/MENTAL_MODEL.md +6 -0
- package/src/platforms/pce/MENTAL_MODEL.md +6 -0
- package/src/platforms/sms/MENTAL_MODEL.md +6 -0
- package/src/platforms/snes/MENTAL_MODEL.md +10 -4
- package/src/toolchains/_worker/wasm-worker.js +5 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
This arm cspec split from the main arm.cspec.
|
|
5
|
+
The difference is no floating point registers for
|
|
6
|
+
older arm variants (pre-v7)
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
<compiler_spec>
|
|
10
|
+
<!--
|
|
11
|
+
Assumes Procedure Call Standard for the ARM Architecture (AAPCS) Applies.
|
|
12
|
+
-->
|
|
13
|
+
<data_organization> <!-- These tags were generated with gcc 4.2.4 -->
|
|
14
|
+
<absolute_max_alignment value="0" />
|
|
15
|
+
<machine_alignment value="2" />
|
|
16
|
+
<default_alignment value="1" />
|
|
17
|
+
<default_pointer_alignment value="4" />
|
|
18
|
+
<pointer_size value="4" />
|
|
19
|
+
<wchar_size value="4" />
|
|
20
|
+
<short_size value="2" />
|
|
21
|
+
<integer_size value="4" />
|
|
22
|
+
<long_size value="4" />
|
|
23
|
+
<long_long_size value="8" />
|
|
24
|
+
<float_size value="4" />
|
|
25
|
+
<double_size value="8" />
|
|
26
|
+
<long_double_size value="8" />
|
|
27
|
+
<size_alignment_map>
|
|
28
|
+
<entry size="1" alignment="1" />
|
|
29
|
+
<entry size="2" alignment="2" />
|
|
30
|
+
<entry size="4" alignment="4" />
|
|
31
|
+
<entry size="8" alignment="8" />
|
|
32
|
+
</size_alignment_map>
|
|
33
|
+
</data_organization>
|
|
34
|
+
<global>
|
|
35
|
+
<range space="ram"/>
|
|
36
|
+
</global>
|
|
37
|
+
<stackpointer register="sp" space="ram"/>
|
|
38
|
+
<funcptr align="2"/> <!-- Function pointers are word aligned and leastsig bit may encode otherstuff -->
|
|
39
|
+
<default_proto>
|
|
40
|
+
<prototype name="__stdcall" extrapop="0" stackshift="0">
|
|
41
|
+
<input>
|
|
42
|
+
<pentry minsize="1" maxsize="4" extension="inttype">
|
|
43
|
+
<register name="r0"/>
|
|
44
|
+
</pentry>
|
|
45
|
+
<pentry minsize="1" maxsize="4" extension="inttype">
|
|
46
|
+
<register name="r1"/>
|
|
47
|
+
</pentry>
|
|
48
|
+
<pentry minsize="1" maxsize="4" extension="inttype">
|
|
49
|
+
<register name="r2"/>
|
|
50
|
+
</pentry>
|
|
51
|
+
<pentry minsize="1" maxsize="4" extension="inttype">
|
|
52
|
+
<register name="r3"/>
|
|
53
|
+
</pentry>
|
|
54
|
+
<pentry minsize="1" maxsize="500" align="4">
|
|
55
|
+
<addr offset="0" space="stack"/>
|
|
56
|
+
</pentry>
|
|
57
|
+
</input>
|
|
58
|
+
<output>
|
|
59
|
+
<pentry minsize="1" maxsize="4" extension="inttype">
|
|
60
|
+
<register name="r0"/>
|
|
61
|
+
</pentry>
|
|
62
|
+
<pentry minsize="5" maxsize="8">
|
|
63
|
+
<addr space="join" piece1="r1" piece2="r0"/>
|
|
64
|
+
</pentry>
|
|
65
|
+
</output>
|
|
66
|
+
<unaffected>
|
|
67
|
+
<register name="r4"/>
|
|
68
|
+
<register name="r5"/>
|
|
69
|
+
<register name="r6"/>
|
|
70
|
+
<register name="r7"/>
|
|
71
|
+
<register name="r8"/>
|
|
72
|
+
<register name="r9"/>
|
|
73
|
+
<register name="r10"/>
|
|
74
|
+
<register name="r11"/>
|
|
75
|
+
<register name="sp"/>
|
|
76
|
+
</unaffected>
|
|
77
|
+
<killedbycall>
|
|
78
|
+
<register name="r1"/>
|
|
79
|
+
</killedbycall>
|
|
80
|
+
</prototype>
|
|
81
|
+
</default_proto>
|
|
82
|
+
|
|
83
|
+
<callfixup name="switch8_r3">
|
|
84
|
+
<target name="switch8_r3"/>
|
|
85
|
+
<pcode>
|
|
86
|
+
<body><![CDATA[
|
|
87
|
+
tmpptr = lr - 1;
|
|
88
|
+
tblsize = *:1 tmpptr;
|
|
89
|
+
r12 = zext(tblsize);
|
|
90
|
+
|
|
91
|
+
inbounds = r3 < r12;
|
|
92
|
+
|
|
93
|
+
if (!inbounds) goto <next1>;
|
|
94
|
+
offset = *:1 (lr + r3);
|
|
95
|
+
r3 = zext(offset);
|
|
96
|
+
<next1>
|
|
97
|
+
|
|
98
|
+
if (inbounds) goto <next2>;
|
|
99
|
+
offset = *:1 (lr + r12);
|
|
100
|
+
r3 = zext(offset);
|
|
101
|
+
<next2>
|
|
102
|
+
|
|
103
|
+
r3 = r3 * 2;
|
|
104
|
+
|
|
105
|
+
r12 = lr + r3;
|
|
106
|
+
|
|
107
|
+
ISAModeSwitch = (r12 & 1) != 1;
|
|
108
|
+
TB = ISAModeSwitch;
|
|
109
|
+
pc = r12 & 0xfffffffe;
|
|
110
|
+
goto [pc];
|
|
111
|
+
]]></body>
|
|
112
|
+
</pcode>
|
|
113
|
+
</callfixup>
|
|
114
|
+
|
|
115
|
+
<callfixup name="switch8_r0">
|
|
116
|
+
<target name="__gnu_thumb1_case_uqi"/>
|
|
117
|
+
<target name="switch8_r0"/>
|
|
118
|
+
<pcode>
|
|
119
|
+
<body><![CDATA[
|
|
120
|
+
tmpptr = lr & 0xfffffffe;
|
|
121
|
+
|
|
122
|
+
offset = *:1 (tmpptr + r0);
|
|
123
|
+
lr = lr + 2 * zext(offset);
|
|
124
|
+
|
|
125
|
+
ISAModeSwitch = (lr & 1) != 0;
|
|
126
|
+
TB = ISAModeSwitch;
|
|
127
|
+
pc = lr & 0xfffffffe;
|
|
128
|
+
goto [pc];
|
|
129
|
+
]]></body>
|
|
130
|
+
</pcode>
|
|
131
|
+
</callfixup>
|
|
132
|
+
|
|
133
|
+
<callfixup name="switchS8_r0">
|
|
134
|
+
<target name="__gnu_thumb1_case_sqi"/>
|
|
135
|
+
<target name="switchS8_r0"/>
|
|
136
|
+
<pcode>
|
|
137
|
+
<body><![CDATA[
|
|
138
|
+
tmpptr = lr & 0xfffffffe;
|
|
139
|
+
|
|
140
|
+
offset = *:1 (tmpptr + r0);
|
|
141
|
+
lr = lr + 2 * sext(offset);
|
|
142
|
+
|
|
143
|
+
ISAModeSwitch = (lr & 1) != 0;
|
|
144
|
+
TB = ISAModeSwitch;
|
|
145
|
+
pc = lr & 0xfffffffe;
|
|
146
|
+
goto [pc];
|
|
147
|
+
]]></body>
|
|
148
|
+
</pcode>
|
|
149
|
+
</callfixup>
|
|
150
|
+
|
|
151
|
+
<callfixup name="switch16_shi_r0">
|
|
152
|
+
<target name="__gnu_thumb1_case_shi"/>
|
|
153
|
+
<target name="switch16_shi_r0"/>
|
|
154
|
+
<pcode>
|
|
155
|
+
<body><![CDATA[
|
|
156
|
+
tmpptr = lr & 0xfffffffe;
|
|
157
|
+
|
|
158
|
+
index = r0 * 2;
|
|
159
|
+
offset = *:2 (tmpptr + index);
|
|
160
|
+
lr = lr + 2 * sext(offset);
|
|
161
|
+
|
|
162
|
+
ISAModeSwitch = (lr & 1) != 0;
|
|
163
|
+
TB = ISAModeSwitch;
|
|
164
|
+
pc = lr & 0xfffffffe;
|
|
165
|
+
goto [pc];
|
|
166
|
+
]]></body>
|
|
167
|
+
</pcode>
|
|
168
|
+
</callfixup>
|
|
169
|
+
|
|
170
|
+
<callfixup name="switch16_uhi_r0">
|
|
171
|
+
<target name="__gnu_thumb1_case_uhi"/>
|
|
172
|
+
<target name="switch16_shi_r0"/>
|
|
173
|
+
<pcode>
|
|
174
|
+
<body><![CDATA[
|
|
175
|
+
tmpptr = lr & 0xfffffffe;
|
|
176
|
+
|
|
177
|
+
index = r0 * 2;
|
|
178
|
+
offset = *:2 (tmpptr + index);
|
|
179
|
+
lr = lr + 2 * zext(offset);
|
|
180
|
+
|
|
181
|
+
ISAModeSwitch = (lr & 1) != 0;
|
|
182
|
+
TB = ISAModeSwitch;
|
|
183
|
+
pc = lr & 0xfffffffe;
|
|
184
|
+
goto [pc];
|
|
185
|
+
]]></body>
|
|
186
|
+
</pcode>
|
|
187
|
+
</callfixup>
|
|
188
|
+
|
|
189
|
+
<callfixup name="switch32_si_r0">
|
|
190
|
+
<target name="__gnu_thumb1_case_si"/>
|
|
191
|
+
<target name="switch32_si_r0"/>
|
|
192
|
+
<pcode>
|
|
193
|
+
<body><![CDATA[
|
|
194
|
+
tmpptr = (lr + 2) & 0xfffffffc;
|
|
195
|
+
|
|
196
|
+
index = r0 * 4;
|
|
197
|
+
offset = *:4 (tmpptr + index);
|
|
198
|
+
offset = offset * 4;
|
|
199
|
+
lr = lr + offset;
|
|
200
|
+
|
|
201
|
+
ISAModeSwitch = (lr & 1) != 0;
|
|
202
|
+
TB = ISAModeSwitch;
|
|
203
|
+
pc = lr & 0xfffffffe;
|
|
204
|
+
goto [pc];
|
|
205
|
+
]]></body>
|
|
206
|
+
</pcode>
|
|
207
|
+
</callfixup>
|
|
208
|
+
|
|
209
|
+
</compiler_spec>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
|
|
3
|
+
<processor_spec>
|
|
4
|
+
<properties>
|
|
5
|
+
<property key="addressesDoNotAppearDirectlyInCode" value="true"/>
|
|
6
|
+
<property key="allowOffcutReferencesToFunctionStarts" value="true"/>
|
|
7
|
+
<property key="useNewFunctionStackAnalysis" value="true"/>
|
|
8
|
+
<property key="enableSharedReturnAnalysis" value="false"/>
|
|
9
|
+
<property key="enableContiguousFunctionsOnly" value="false"/>
|
|
10
|
+
<property key="emulateInstructionStateModifierClass" value="ghidra.program.emulation.ARMEmulateInstructionStateModifier"/>
|
|
11
|
+
</properties>
|
|
12
|
+
<programcounter register="pc"/>
|
|
13
|
+
<context_data>
|
|
14
|
+
<context_set space="ram">
|
|
15
|
+
<set name="LRset" val="0" description="0 lr reg not set, 1 for LR set, affects BX as a call"/>
|
|
16
|
+
</context_set>
|
|
17
|
+
<tracked_set space="ram">
|
|
18
|
+
<set name="spsr" val="0"/>
|
|
19
|
+
</tracked_set>
|
|
20
|
+
</context_data>
|
|
21
|
+
|
|
22
|
+
<default_symbols>
|
|
23
|
+
<symbol name="Reset" address="ram:0x0" entry="true"/>
|
|
24
|
+
<symbol name="UndefinedInstruction" address="ram:0x4" entry="true"/>
|
|
25
|
+
<symbol name="SupervisorCall" address="ram:0x8" entry="true"/>
|
|
26
|
+
<symbol name="PrefetchAbort" address="ram:0xC" entry="true"/>
|
|
27
|
+
<symbol name="DataAbort" address="ram:0x10" entry="true"/>
|
|
28
|
+
<symbol name="IRQ" address="ram:0x18" entry="true"/>
|
|
29
|
+
<symbol name="FIQ" address="ram:0x1c" entry="true"/>
|
|
30
|
+
|
|
31
|
+
<symbol name="H_Reset" address="ram:0xFFFF0000" entry="true"/>
|
|
32
|
+
<symbol name="H_UndefinedInstruction" address="ram:0xFFFF0004" entry="true"/>
|
|
33
|
+
<symbol name="H_SupervisorCall" address="ram:0xFFFF0008" entry="true"/>
|
|
34
|
+
<symbol name="H_PrefetchAbort" address="ram:0xFFFF000C" entry="true"/>
|
|
35
|
+
<symbol name="H_DataAbort" address="ram:0xFFFF0010" entry="true"/>
|
|
36
|
+
<symbol name="H_IRQ" address="ram:0xFFFF0018" entry="true"/>
|
|
37
|
+
<symbol name="H_FIQ" address="ram:0xFFFF001c" entry="true"/>
|
|
38
|
+
</default_symbols>
|
|
39
|
+
|
|
40
|
+
</processor_spec>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
|
|
3
|
+
<processor_spec>
|
|
4
|
+
<properties>
|
|
5
|
+
<property key="addressesDoNotAppearDirectlyInCode" value="true"/>
|
|
6
|
+
<property key="allowOffcutReferencesToFunctionStarts" value="true"/>
|
|
7
|
+
<property key="useNewFunctionStackAnalysis" value="true"/>
|
|
8
|
+
<property key="enableSharedReturnAnalysis" value="false"/>
|
|
9
|
+
<property key="enableContiguousFunctionsOnly" value="false"/>
|
|
10
|
+
<property key="emulateInstructionStateModifierClass" value="ghidra.program.emulation.ARMEmulateInstructionStateModifier"/>
|
|
11
|
+
</properties>
|
|
12
|
+
<programcounter register="pc"/>
|
|
13
|
+
<context_data>
|
|
14
|
+
<context_set space="ram">
|
|
15
|
+
<set name="TMode" val="0" description="0 for ARM 32-bit, 1 for THUMB 16-bit"/>
|
|
16
|
+
<set name="LRset" val="0" description="0 lr reg not set, 1 for LR set, affects BX as a call"/>
|
|
17
|
+
</context_set>
|
|
18
|
+
<tracked_set space="ram">
|
|
19
|
+
<set name="spsr" val="0"/>
|
|
20
|
+
</tracked_set>
|
|
21
|
+
</context_data>
|
|
22
|
+
|
|
23
|
+
<default_symbols>
|
|
24
|
+
<symbol name="Reset" address="ram:0x0" entry="true"/>
|
|
25
|
+
<symbol name="UndefinedInstruction" address="ram:0x4" entry="true"/>
|
|
26
|
+
<symbol name="SupervisorCall" address="ram:0x8" entry="true"/>
|
|
27
|
+
<symbol name="PrefetchAbort" address="ram:0xC" entry="true"/>
|
|
28
|
+
<symbol name="DataAbort" address="ram:0x10" entry="true"/>
|
|
29
|
+
<symbol name="NotUsed" address="ram:0x14" entry="true"/>
|
|
30
|
+
<symbol name="IRQ" address="ram:0x18" entry="true"/>
|
|
31
|
+
<symbol name="FIQ" address="ram:0x1c" entry="true"/>
|
|
32
|
+
|
|
33
|
+
<symbol name="H_Reset" address="ram:0xFFFF0000" entry="true"/>
|
|
34
|
+
<symbol name="H_UndefinedInstruction" address="ram:0xFFFF0004" entry="true"/>
|
|
35
|
+
<symbol name="H_SupervisorCall" address="ram:0xFFFF0008" entry="true"/>
|
|
36
|
+
<symbol name="H_PrefetchAbort" address="ram:0xFFFF000C" entry="true"/>
|
|
37
|
+
<symbol name="H_DataAbort" address="ram:0xFFFF0010" entry="true"/>
|
|
38
|
+
<symbol name="H_NotUsed" address="ram:0xFFFF0014" entry="true"/>
|
|
39
|
+
<symbol name="H_IRQ" address="ram:0xFFFF0018" entry="true"/>
|
|
40
|
+
<symbol name="H_FIQ" address="ram:0xFFFF001c" entry="true"/>
|
|
41
|
+
</default_symbols>
|
|
42
|
+
|
|
43
|
+
</processor_spec>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
|
|
3
|
+
<compiler_spec>
|
|
4
|
+
<global>
|
|
5
|
+
<range space="RAM"/>
|
|
6
|
+
</global>
|
|
7
|
+
<stackpointer register="SP" space="RAM" growth="negative"/>
|
|
8
|
+
<returnaddress>
|
|
9
|
+
<varnode space="stack" offset="1" size="2"/>
|
|
10
|
+
</returnaddress>
|
|
11
|
+
<default_proto>
|
|
12
|
+
<prototype name="__stdcall" extrapop="2" stackshift="2" strategy="register">
|
|
13
|
+
<input>
|
|
14
|
+
<pentry minsize="1" maxsize="1">
|
|
15
|
+
<register name="A"/>
|
|
16
|
+
</pentry>
|
|
17
|
+
<pentry minsize="1" maxsize="1">
|
|
18
|
+
<register name="X"/>
|
|
19
|
+
</pentry>
|
|
20
|
+
<pentry minsize="1" maxsize="1">
|
|
21
|
+
<register name="Y"/>
|
|
22
|
+
</pentry>
|
|
23
|
+
<pentry minsize="1" maxsize="1">
|
|
24
|
+
<register name="SH"/>
|
|
25
|
+
</pentry>
|
|
26
|
+
<pentry minsize="1" maxsize="1">
|
|
27
|
+
<register name="DH"/>
|
|
28
|
+
</pentry>
|
|
29
|
+
<pentry minsize="1" maxsize="1">
|
|
30
|
+
<register name="LH"/>
|
|
31
|
+
</pentry>
|
|
32
|
+
<pentry minsize="1" maxsize="1">
|
|
33
|
+
<register name="MPR0"/>
|
|
34
|
+
</pentry>
|
|
35
|
+
<pentry minsize="1" maxsize="1">
|
|
36
|
+
<register name="MPR1"/>
|
|
37
|
+
</pentry>
|
|
38
|
+
<pentry minsize="1" maxsize="1">
|
|
39
|
+
<register name="MPR2"/>
|
|
40
|
+
</pentry>
|
|
41
|
+
<pentry minsize="1" maxsize="1">
|
|
42
|
+
<register name="MPR3"/>
|
|
43
|
+
</pentry>
|
|
44
|
+
<pentry minsize="1" maxsize="1">
|
|
45
|
+
<register name="MPR4"/>
|
|
46
|
+
</pentry>
|
|
47
|
+
<pentry minsize="1" maxsize="1">
|
|
48
|
+
<register name="MPR5"/>
|
|
49
|
+
</pentry>
|
|
50
|
+
<pentry minsize="1" maxsize="1">
|
|
51
|
+
<register name="MPR6"/>
|
|
52
|
+
</pentry>
|
|
53
|
+
<pentry minsize="1" maxsize="1">
|
|
54
|
+
<register name="MPR7"/>
|
|
55
|
+
</pentry>
|
|
56
|
+
</input>
|
|
57
|
+
<output>
|
|
58
|
+
<pentry minsize="1" maxsize="1">
|
|
59
|
+
<register name="A"/>
|
|
60
|
+
</pentry>
|
|
61
|
+
</output>
|
|
62
|
+
<unaffected>
|
|
63
|
+
<register name="SP"/>
|
|
64
|
+
</unaffected>
|
|
65
|
+
</prototype>
|
|
66
|
+
</default_proto>
|
|
67
|
+
</compiler_spec>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
|
|
3
|
+
<language_definitions>
|
|
4
|
+
|
|
5
|
+
<language processor="HuC6280"
|
|
6
|
+
endian="little"
|
|
7
|
+
size="16"
|
|
8
|
+
variant="default"
|
|
9
|
+
version="1.0"
|
|
10
|
+
slafile="HuC6280.sla"
|
|
11
|
+
processorspec="HuC6280.pspec"
|
|
12
|
+
manualindexfile="../manuals/HuC6280.idx"
|
|
13
|
+
id="HuC6280:LE:16:default">
|
|
14
|
+
<description>HuC6280 CMOS 8-bit Microprocessor</description>
|
|
15
|
+
<compiler name="default" spec="HuC6280.cspec" id="default"/>
|
|
16
|
+
</language>
|
|
17
|
+
|
|
18
|
+
</language_definitions>
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
|
|
3
|
+
<processor_spec>
|
|
4
|
+
<programcounter register="PC"/>
|
|
5
|
+
|
|
6
|
+
<volatile outputop="write" inputop="read">
|
|
7
|
+
<range space="RAM" first="0x0000" last="0x03ff"/> <!-- VDC -->
|
|
8
|
+
<range space="RAM" first="0x0400" last="0x07ff"/> <!-- VCE -->
|
|
9
|
+
<range space="RAM" first="0x0800" last="0x0bff"/> <!-- PSG -->
|
|
10
|
+
<range space="RAM" first="0x0C00" last="0x0fff"/> <!-- Timer I/O -->
|
|
11
|
+
<range space="RAM" first="0x1000" last="0x13ff"/> <!-- Pad I/O -->
|
|
12
|
+
<range space="RAM" first="0x1400" last="0x17ff"/> <!-- IRQ I/O -->
|
|
13
|
+
<range space="RAM" first="0x1800" last="0x19ff"/> <!-- CD-ROM I/O -->
|
|
14
|
+
</volatile>
|
|
15
|
+
|
|
16
|
+
<default_symbols>
|
|
17
|
+
<symbol name="VDC_ST0" address="0x0000"/>
|
|
18
|
+
<symbol name="VDC_ST1" address="0x0002"/>
|
|
19
|
+
<symbol name="VDC_ST2" address="0x0003"/>
|
|
20
|
+
<symbol name="VCE_Control" address="0x0400"/>
|
|
21
|
+
<symbol name="VCE_CTAddrL" address="0x0402"/>
|
|
22
|
+
<symbol name="VCE_CTAddrM" address="0x0403"/>
|
|
23
|
+
<symbol name="VCE_CTDataL" address="0x0404"/>
|
|
24
|
+
<symbol name="VCE_CTDataM" address="0x0405"/>
|
|
25
|
+
<symbol name="PSG_CHSel" address="0x0800"/>
|
|
26
|
+
<symbol name="PSG_AmpLev" address="0x0801"/>
|
|
27
|
+
<symbol name="PSG_FreqL" address="0x0802"/>
|
|
28
|
+
<symbol name="PSG_FreqH" address="0x0803"/>
|
|
29
|
+
<symbol name="PSG_CHOnW" address="0x0804"/>
|
|
30
|
+
<symbol name="PSG_LRVol" address="0x0805"/>
|
|
31
|
+
<symbol name="PSG_WData" address="0x0806"/>
|
|
32
|
+
<symbol name="PSG_NEnable" address="0x0807"/>
|
|
33
|
+
<symbol name="PSG_LFOFreq" address="0x0808"/>
|
|
34
|
+
<symbol name="PSG_LFOCtr" address="0x0809"/>
|
|
35
|
+
<symbol name="TMR_Reset" address="0x0C00"/>
|
|
36
|
+
<symbol name="TMR_Control" address="0x0C01"/>
|
|
37
|
+
<symbol name="PAD_IO" address="0x1000"/>
|
|
38
|
+
<symbol name="IRQ_Disable" address="0x1402"/>
|
|
39
|
+
<symbol name="IRQ_Request" address="0x1403"/>
|
|
40
|
+
<!--Only when CD System present-->
|
|
41
|
+
<symbol name="CDC_Status" address="0x1800"/>
|
|
42
|
+
<symbol name="CDC_CmdStatData" address="0x1801"/>
|
|
43
|
+
<symbol name="ADPCM_CDControl" address="0x1802"/>
|
|
44
|
+
<symbol name="BRAMLck" address="0x1803"/>
|
|
45
|
+
<symbol name="CDReset" address="0x1804"/>
|
|
46
|
+
<symbol name="ConvPCM" address="0x1805"/>
|
|
47
|
+
<symbol name="PCMData" address="0x1806"/>
|
|
48
|
+
<symbol name="BRAMUnlck" address="0x1807"/>
|
|
49
|
+
<symbol name="ADPCM_LSB" address="0x1808"/>
|
|
50
|
+
<symbol name="ADPCM_MSB" address="0x1809"/>
|
|
51
|
+
<symbol name="ADPCM_RAMData" address="0x180A"/>
|
|
52
|
+
<symbol name="ADPCM_DMAControl" address="0x180B"/>
|
|
53
|
+
<symbol name="ADPCM_Status" address="0x180C"/>
|
|
54
|
+
<symbol name="ADPCM_AdrCntr" address="0x180D"/>
|
|
55
|
+
<symbol name="ADPCM_PlyRate" address="0x180E"/>
|
|
56
|
+
<symbol name="ADPCM_FadeTmr" address="0x180F"/>
|
|
57
|
+
<symbol name="CD_BOOT" address="0xE000"/>
|
|
58
|
+
<symbol name="CD_RESET" address="0xE003"/>
|
|
59
|
+
<symbol name="CD_BASE" address="0xE006"/>
|
|
60
|
+
<symbol name="CD_READ" address="0xE009"/>
|
|
61
|
+
<symbol name="CD_SEEK" address="0xE00C"/>
|
|
62
|
+
<symbol name="CD_EXEC" address="0xE00F"/>
|
|
63
|
+
<symbol name="CD_PLAY" address="0xE012"/>
|
|
64
|
+
<symbol name="CD_SEARCH" address="0xE015"/>
|
|
65
|
+
<symbol name="CD_PAUSE" address="0xE018"/>
|
|
66
|
+
<symbol name="CD_STAT" address="0xE01B"/>
|
|
67
|
+
<symbol name="CD_SUBQ" address="0xE01E"/>
|
|
68
|
+
<symbol name="CD_DINFO" address="0xE021"/>
|
|
69
|
+
<symbol name="CD_CONTNTS" address="0xE024"/>
|
|
70
|
+
<symbol name="CD_SUBRD" address="0xE027"/>
|
|
71
|
+
<symbol name="CD_PCMRD" address="0xE02A"/>
|
|
72
|
+
<symbol name="CD_FADE" address="0xE02D"/>
|
|
73
|
+
<symbol name="AD_RESET" address="0xE030"/>
|
|
74
|
+
<symbol name="AD_TRANS" address="0xE033"/>
|
|
75
|
+
<symbol name="AD_READ" address="0xE036"/>
|
|
76
|
+
<symbol name="AD_WRITE" address="0xE039"/>
|
|
77
|
+
<symbol name="AD_PLAY" address="0xE03C"/>
|
|
78
|
+
<symbol name="AD_CPLAY" address="0xE03F"/>
|
|
79
|
+
<symbol name="AD_STOP" address="0xE042"/>
|
|
80
|
+
<symbol name="AD_STAT" address="0xE045"/>
|
|
81
|
+
<symbol name="BM_FORMAT" address="0xE048"/>
|
|
82
|
+
<symbol name="BM_FREE" address="0xE04B"/>
|
|
83
|
+
<symbol name="BM_READ" address="0xE04E"/>
|
|
84
|
+
<symbol name="BM_WRITE" address="0xE051"/>
|
|
85
|
+
<symbol name="BM_DELETE" address="0xE054"/>
|
|
86
|
+
<symbol name="BM_FILES" address="0xE057"/>
|
|
87
|
+
<symbol name="EX_GETVER" address="0xE05A"/>
|
|
88
|
+
<symbol name="EX_SETVEC" address="0xE05D"/>
|
|
89
|
+
<symbol name="EX_GETFNT" address="0xE060"/>
|
|
90
|
+
<symbol name="EX_JOYSNS" address="0xE063"/>
|
|
91
|
+
<symbol name="EX_JOYREP" address="0xE066"/>
|
|
92
|
+
<symbol name="EX_SCRSIZ" address="0xE069"/>
|
|
93
|
+
<symbol name="EX_DOTMOD" address="0xE06C"/>
|
|
94
|
+
<symbol name="EX_SCRMOD" address="0xE06F"/>
|
|
95
|
+
<symbol name="EX_IMODE" address="0xE072"/>
|
|
96
|
+
<symbol name="EX_VMODE" address="0xE075"/>
|
|
97
|
+
<symbol name="EX_HMODE" address="0xE078"/>
|
|
98
|
+
<symbol name="EX_VSYNC" address="0xE07B"/>
|
|
99
|
+
<symbol name="EX_RCRON" address="0xE07E"/>
|
|
100
|
+
<symbol name="EX_RCROFF" address="0xE081"/>
|
|
101
|
+
<symbol name="EX_IRQON" address="0xE084"/>
|
|
102
|
+
<symbol name="EX_IRQOFF" address="0xE087"/>
|
|
103
|
+
<symbol name="EX_BGON" address="0xE08A"/>
|
|
104
|
+
<symbol name="EX_BGOFF" address="0xE08D"/>
|
|
105
|
+
<symbol name="EX_SPRON" address="0xE090"/>
|
|
106
|
+
<symbol name="EX_SPROFF" address="0xE093"/>
|
|
107
|
+
<symbol name="EX_DSPON" address="0xE096"/>
|
|
108
|
+
<symbol name="EX_DSPOFF" address="0xE099"/>
|
|
109
|
+
<symbol name="EX_DMAMOD" address="0xE09C"/>
|
|
110
|
+
<symbol name="EX_SPRDMA" address="0xE09F"/>
|
|
111
|
+
<symbol name="EX_SATCLR" address="0xE0A2"/>
|
|
112
|
+
<symbol name="EX_SPRPUT" address="0xE0A5"/>
|
|
113
|
+
<symbol name="EX_SETRCR" address="0xE0A8"/>
|
|
114
|
+
<symbol name="EX_SETRED" address="0xE0AB"/>
|
|
115
|
+
<symbol name="EX_SETWRT" address="0xE0AE"/>
|
|
116
|
+
<symbol name="EX_SETDMA" address="0xE0B1"/>
|
|
117
|
+
<symbol name="EX_BINBCD" address="0xE0B4"/>
|
|
118
|
+
<symbol name="EX_BCDBIN" address="0xE0B7"/>
|
|
119
|
+
<symbol name="EX_RND" address="0xE0BA"/>
|
|
120
|
+
<symbol name="MA_MUL8U" address="0xE0BD"/>
|
|
121
|
+
<symbol name="MA_MUL8S" address="0xE0C0"/>
|
|
122
|
+
<symbol name="MA_MUL16U" address="0xE0C3"/>
|
|
123
|
+
<symbol name="MA_DIV16U" address="0xE0C6"/>
|
|
124
|
+
<symbol name="MA_DIV16S" address="0xE0C9"/>
|
|
125
|
+
<symbol name="MA_SQRT" address="0xE0CC"/>
|
|
126
|
+
<symbol name="MA_SIN" address="0xE0CF"/>
|
|
127
|
+
<symbol name="MA_COS" address="0xE0D2"/>
|
|
128
|
+
<symbol name="MA_ATNI" address="0xE0D5"/>
|
|
129
|
+
<symbol name="PSG_BIOS" address="0xE0D8"/>
|
|
130
|
+
<symbol name="GRP_BIOS" address="0xE0DB"/>
|
|
131
|
+
<symbol name="EX_MEMOPEN" address="0xE0DE"/>
|
|
132
|
+
<symbol name="PSG_FUNC" address="0xE0E1"/>
|
|
133
|
+
<symbol name="EX_COLORCMD" address="0xE0E4"/>
|
|
134
|
+
<symbol name="EX_FUNC1" address="0xE0E7"/>
|
|
135
|
+
<symbol name="EX_FUNC2" address="0xE0EA"/>
|
|
136
|
+
<symbol name="MA_MUL16S" address="0xE0ED"/>
|
|
137
|
+
<symbol name="MA_CBASIS" address="0xE0F0"/>
|
|
138
|
+
<!--Only when CD System present end-->
|
|
139
|
+
<symbol name="IRQ2" address="0xFFF6" entry="true" type="code_ptr"/>
|
|
140
|
+
<symbol name="IRQ1" address="0xFFF8" entry="true" type="code_ptr"/>
|
|
141
|
+
<symbol name="TIMER" address="0xFFFA" entry="true" type="code_ptr"/>
|
|
142
|
+
<symbol name="NMI" address="0xFFFC" entry="true" type="code_ptr"/>
|
|
143
|
+
<symbol name="RESET" address="0xFFFE" entry="true" type="code_ptr"/>
|
|
144
|
+
</default_symbols>
|
|
145
|
+
|
|
146
|
+
<default_memory_blocks>
|
|
147
|
+
<memory_block name="ZP_RAM" start_address="0x2000" length="0x0100" initialized="false"/>
|
|
148
|
+
<memory_block name="STACK" start_address="0x2100" length="0x0100" initialized="false"/>
|
|
149
|
+
</default_memory_blocks>
|
|
150
|
+
</processor_spec>
|