L'Empereur/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
{{rommap|game=L'Empereur}}
{{rommap|game=L'Empereur}}


Note that most functions in this game are essentially written in a higher-level computer language than 6502. By using a jump table, more complex operations are able to be identified by single hex codes. These functions are prefaced by "20 09 E5 ## ##" and terminated by the operation "CF". (## ## indicates how many memory spaces need to be dedicated to the new function, written as an inverse. A function that requires no new memory space will say "00 00", while one that requires 16 spaces will say "F0 FF"
Note that most functions in this game are essentially written in a higher-level computer language than 6502. By using a jump table, more complex operations are able to be identified by single hex codes. These functions are prefaced by "20 09 E5 ## ##" (JSR $E509) and terminated by the operation "CF". (## ## indicates how many memory spaces need to be dedicated to the new function, written as an inverse. A function that requires no new memory space will say "00 00", while one that requires 16 spaces will say "F0 FF".


Sometimes one of these functions will jump to a subroutine which is written "normally" (without upper-level operations). These routines are prefaced by "20 E3 E2 ## ## ##" (JSR $E2E3).


A list of these operations is located [[L%27Empereur/Jump_Table_Operations|here]]. This same system seems to be used by the other MMC5 Koei games.
A list of these operations is located [[L%27Empereur/Jump_Table_Operations|here]]. This same system seems to be used by the other MMC5 Koei games.
Line 38: Line 39:
==Page FE ($C000-$DFFF)==
==Page FE ($C000-$DFFF)==
ROM location: 0x3C010-0x3E00F
ROM location: 0x3C010-0x3E00F
===FE:C003===
Main game loop. Executes all game functions then waits until interrupt
C008 61          / Push #$01 to stack        / (+2)
C009 E9 6F CF 02 / Run function $[[L%27Empereur:ROM_map#FE:CF6F|CF6F]]        / (-2)
C00D 8D 1F      / Push #$1F to stack        / (+2)
C00F 60          / Push #$00 to stack        / (+2)
C010 E9 C9 CF 04 / Run function $[[L%27Empereur:ROM_map#FE:CFC9|CFC9]]        / (-4)
C014 8D 14      / Push #$14 to stack        / (+2)
C016 67          / Push #$07 to stack        / (+2)
C017 E9 BC C3 04 / Run function $[[L%27Empereur:ROM_map#FE:C3BC|C3BC]]        / (-4)
C01B AA 00 60    / Push $6000/$6001 to stack / (+2)
C01E 8E 16 DF    / Push #$DF16 to stack      / (+2)
C021 E9 27 C6 04 / Run function $[[L%27Empereur:ROM_map#FE:C627|C627]]        / (-4)
C025 61          / Push #$01 to stack        / (+2)
C026 64          / Push #$04 to stack        / (+2)
C027 E9 1E EF 04 / Run function $[[L%27Empereur:ROM_map#FE:EF1E|EF1E]]        / (-4)
C02B B3          / Push M8 to stack          / (+2)
C02C 8E 22 DF    / Push #$DF22 to stack      / (+2)
C02F E9 27 C6 04 / Run function $[[L%27Empereur:ROM_map#FE:C627|C627]]        / (-4)
C033 62          / Push #$02 to stack        / (+2)
C034 64          / Push #$04 to stack        / (+4)
C035 E9 1E EF 04 / Run function $[[L%27Empereur:ROM_map#FE:EF1E|EF1E]]        / (-4)
C039 B3          / Push M8 to stack          / (+2)
C03A 8E 2A DF    / Push #$DF2A to stack      / (+2)
C03D E9 27 C6 04 / Run function $[[L%27Empereur:ROM_map#FE:C627|C627]]        / (-4)
C041 D6 41 C0    / Jump to $C041            / Stall until interrupt
C042 CF          / Exit

Revision as of 03:38, 4 January 2019

Chip tiny.png The following article is a ROM map for L'Empereur.

Note that most functions in this game are essentially written in a higher-level computer language than 6502. By using a jump table, more complex operations are able to be identified by single hex codes. These functions are prefaced by "20 09 E5 ## ##" (JSR $E509) and terminated by the operation "CF". (## ## indicates how many memory spaces need to be dedicated to the new function, written as an inverse. A function that requires no new memory space will say "00 00", while one that requires 16 spaces will say "F0 FF".

Sometimes one of these functions will jump to a subroutine which is written "normally" (without upper-level operations). These routines are prefaced by "20 E3 E2 ## ## ##" (JSR $E2E3).

A list of these operations is located here. This same system seems to be used by the other MMC5 Koei games.

Page E8 ($A000-$BFFF)

ROM location: 0x10010-0x1200F

E8:A8DF

Main function for all CPU city actions.

A8E4 AA D1 7C    / Push $7CD1/$7CD2 to stack / (+2) Active city
A8E7 E9 DB BA 02 / Run function $BADB        / (-2)
...

E8:BADB

Page FA ($A000-$BFFF)

FA:A004

Table of Nations

$A004 + #$0A x (Nation code) = Beginning of nation data starting with name and ending with hidden stat.

FA:A09A

Table of Cities

$A09A + #$20 x (City code) = Beginning of city data starting with name and ending with hidden stat.

FA:A650

Table of Officers

$A650 + #$11 x (Officer code) = Beginning of officer data starting with name and ending with hidden stat.

See Notes for more detail on hidden stats.

Page FE ($C000-$DFFF)

ROM location: 0x3C010-0x3E00F

FE:C003

Main game loop. Executes all game functions then waits until interrupt

C008 61          / Push #$01 to stack        / (+2)
C009 E9 6F CF 02 / Run function $CF6F        / (-2)
C00D 8D 1F       / Push #$1F to stack        / (+2)
C00F 60          / Push #$00 to stack        / (+2)
C010 E9 C9 CF 04 / Run function $CFC9        / (-4)
C014 8D 14       / Push #$14 to stack        / (+2)
C016 67          / Push #$07 to stack        / (+2)
C017 E9 BC C3 04 / Run function $C3BC        / (-4)
C01B AA 00 60    / Push $6000/$6001 to stack / (+2)
C01E 8E 16 DF    / Push #$DF16 to stack      / (+2)
C021 E9 27 C6 04 / Run function $C627        / (-4)
C025 61          / Push #$01 to stack        / (+2)
C026 64          / Push #$04 to stack        / (+2)
C027 E9 1E EF 04 / Run function $EF1E        / (-4)
C02B B3          / Push M8 to stack          / (+2)
C02C 8E 22 DF    / Push #$DF22 to stack      / (+2)
C02F E9 27 C6 04 / Run function $C627        / (-4)
C033 62          / Push #$02 to stack        / (+2)
C034 64          / Push #$04 to stack        / (+4)
C035 E9 1E EF 04 / Run function $EF1E        / (-4)
C039 B3          / Push M8 to stack          / (+2)
C03A 8E 2A DF    / Push #$DF2A to stack      / (+2)
C03D E9 27 C6 04 / Run function $C627        / (-4)
C041 D6 41 C0    / Jump to $C041             / Stall until interrupt
C042 CF          / Exit