Difference between revisions of "L'Empereur:ROM map"

From Data Crystal
Jump to navigation Jump to search
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 23:38, 3 January 2019

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