Skip to content

Instantly share code, notes, and snippets.

@iamgreaser
Created September 28, 2019 03:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iamgreaser/c3130ab87bedf1b1041c814db08be1e4 to your computer and use it in GitHub Desktop.
Save iamgreaser/c3130ab87bedf1b1041c814db08be1e4 to your computer and use it in GitHub Desktop.
preliminary zzt + superz memory maps
// 0C7B: ZZT (?purpose?)
// 0C7B:2085: find_stat_index_at
//
// 14D3: Pascal runtime?
// 14D3:0244: _TMP__ENSURE_STACK_FASTCALL
// 14D3:0329: AllocMem
// 14D3:0341: Freemem
// data+bss:
// - GAP -
// 168D:1E5C:uint8_t[8]: FOREST_TONE_TABLE
// - GAP -
// 168D:232E:uint16_t: PRNG_SEED_LO
// 168D:2320:uint16_t: PRNG_SEED_HI
// - GAP -
// 168D:2334:int16_t: FOREST_TONE_INDEX
// - GAP -
// 168D:2BEB:{type,color}[x in 98?][y in 82]: map
// - 168D:2BEB: THIS_BOARD.MAP.TYPES
// - 168D:2BEC: THIS_BOARD.MAP.COLORS
// 168D:6AB3 - end of THIS_BOARD.MAP!
// 168D:6AB3:int16_t: LAST_STAT_INDEX
// 168D:6AB5:25|0x19: STAT_TABLE
// 168D:6AB5:uint8_t :0x0 : STAT_TABLE[0].X -- PLAYER_X
// 168D:6AB6:uint8_t :0x1 : STAT_TABLE[0].Y -- PLAYER_Y
// 168D:6AB7:int16_t :0x2 : STAT_TABLE[0].STEP_X -- PLAYER_STEP_X
// 168D:6AB9:int16_t :0x4 : STAT_TABLE[0].STEP_Y -- PLAYER_STEP_Y
// 168D:6ABB:int16_t :0x6 : STAT_TABLE[0].CYCLE -- PLAYER_CYCLE
// 168D:6ABD:uint8_t :0x8 : STAT_TABLE[0].P1 -- PLAYER_P1
// 168D:6ABE:uint8_t :0x9 : STAT_TABLE[0].P2 -- PLAYER_P2
// 168D:6ABF:uint8_t :0xa : STAT_TABLE[0].P3 -- PLAYER_P3
// 168D:6AC0:int16_t :0xb : STAT_TABLE[0].FOLLOWER -- PLAYER_FOLLOWER
// 168D:6AC2:int16_t :0xd : STAT_TABLE[0].LEADER -- PLAYER_LEADER
// 168D:6AC4:uint8_t :0xf : STAT_TABLE[0].UNDER.TYPE -- PLAYER_UNDER.TYPE
// 168D:6AC5:uint8_t :0x10: STAT_TABLE[0].UNDER.COLOR -- PLAYER_UNDER.COLOR
// 168D:6AC6:uint16_t:0x11: STAT_TABLE[0].RUNPTR -- PLAYER_RUNPTR
// 168D:6AC8:uint16_t:0x13: STAT_TABLE[0].RUNSEG -- PLAYER_RUNSEG
// 168D:6ACA:int16_t :0x15: STAT_TABLE[0].CODEPC -- PLAYER_CODEPC
// 168D:6ACC:int16_t :0x17: STAT_TABLE[0].CODELEN -- PLAYER_CODELEN
// 168D:6ACE: next round!
// 168D:774E - exclusive end of STAT_TABLE?
// 168D:7767 - real exclusive end of STAT_TABLE?
// 168D:7767:uint8_t: THIS_BOARD.MAX_PLAYER_SHOTS
// 168D:7768:uint8_t: THIS_BOARD.EXITS.NORTH
// 168D:7769:uint8_t: THIS_BOARD.EXITS.SOUTH
// 168D:776A:uint8_t: THIS_BOARD.EXITS.WEST
// 168D:776B:uint8_t: THIS_BOARD.EXITS.EAST
// 168D:776C:uint8_t: THIS_BOARD.RESTART_ON_ZAP
// 168D:776D:uint8_t: THIS_BOARD.PLAYER_ENTER_X
// 168D:776E:uint8_t: THIS_BOARD.PLAYER_ENTER_Y
// 168D:776F:int16_t: THIS_BOARD.CAMERA_X
// 168D:7771:int16_t: THIS_BOARD.CAMERA_Y
// 168D:7773:int16_t: THIS_BOARD.TIME_LIMIT
// - GAP -
// 168D:7784:int16_t: ??? (max 32)
// 168D:7786:farptr: BOARD_POINTERS[33].PTR
// 168D:7788:farptr: BOARD_POINTERS[33].SEG
// 168D:780A:int16_t: BOARD_LENGTHS[33]
// 168D:784C:int16_t: PLAYER_AMMO
// 168D:784E:int16_t: PLAYER_GEMS
// 168D:7850:int16_t: PLAYER_KEYS[7] - often offset by -1
// 168D:7857:int16_t: PLAYER_HEALTH
// 168D:7859:int16_t: CURRENT_BOARD_INDEX
// 168D:785B:int16_t: ???
// 168D:785D:int16_t: PLAYER_ENERGIZED_TICKS
// 168D:785F:int16_t: ???
// 168D:7861:int16_t: PLAYER_SCORE
// - GAP -
// 168D:79C8:int16_t: TIME_LIMIT_CONSUMED
// 168D:79CA:int16_t: ???
// 168D:79CC:uint8_t: WORLD_IS_SAVE_FILE
// 168D:79CD:int16_t: PLAYER_STONES
// - GAP -
// 168D:7CA6:farptr: MAP_???.PTR
// 168D:7CA8:farptr: MAP_???.SEG
// 168D:7CAA:|0xC2:ELEMENT_TYPES[0x4f]
// 168D:7CAA::
// 168D:B888:: End of array
// - GAP -
// 168D:B958:int16_t: GLOBAL_TICK_COUNT
// 168D:B95A:int16_t: ACTIVE_STAT_INDEX
// 135B: Pascal runtime 1
// 13BD: Pascal runtime 2
// 13BD:0244: _TMP__ENSURE_STACK_FASTCALL
// 13BD:0329: AllocMem
// 13BD:0341: Freemem
// data+bss:
// TODO: - GAP -
// 156D:046C:uint16_t: PRNG_SEED_LO
// 156D:046E:uint16_t: PRNG_SEED_HI
// TODO: - GAP -
// 156D:24BD:{type,color}[x in 62?][y in 27]: map
// - 156D:24BD: THIS_BOARD.MAP.TYPES
// - 156D:24BE: THIS_BOARD.MAP.COLORS
// 156D:31D1 - end of THIS_BOARD.MAP!
// 156D:31D1:int16_t: LAST_STAT_INDEX
// 156D:31D3:33|0x21: STAT_TABLE
// 156D:31D3:uint8_t :0x0 : STAT_TABLE[0].X -- PLAYER_X
// 156D:31D4:uint8_t :0x1 : STAT_TABLE[0].Y -- PLAYER_Y
// 156D:31D5:int16_t :0x2 : STAT_TABLE[0].STEP_X -- PLAYER_STEP_X
// 156D:31D7:int16_t :0x4 : STAT_TABLE[0].STEP_Y -- PLAYER_STEP_Y
// 156D:31D9:int16_t :0x6 : STAT_TABLE[0].CYCLE -- PLAYER_CYCLE
// 156D:31DB:uint8_t :0x8 : STAT_TABLE[0].P1 -- PLAYER_P1
// 156D:31DC:uint8_t :0x9 : STAT_TABLE[0].P2 -- PLAYER_P2
// 156D:31DD:uint8_t :0xa : STAT_TABLE[0].P3 -- PLAYER_P3
// 156D:31DE:int16_t :0xb : STAT_TABLE[0].FOLLOWER -- PLAYER_FOLLOWER
// 156D:31E0:int16_t :0xd : STAT_TABLE[0].LEADER -- PLAYER_LEADER
// 156D:31E2:uint8_t :0xf : STAT_TABLE[0].UNDER.TYPE -- PLAYER_UNDER.TYPE
// 156D:31E3:uint8_t :0x10: STAT_TABLE[0].UNDER.COLOR -- PLAYER_UNDER.COLOR
// 156D:31E4:uint16_t:0x11: STAT_TABLE[0].RUNPTR -- PLAYER_RUNPTR
// 156D:31E6:uint16_t:0x13: STAT_TABLE[0].RUNSEG -- PLAYER_RUNSEG
// 156D:31E8:int16_t :0x15: STAT_TABLE[0].CODEPC -- PLAYER_CODEPC
// 156D:31EA:int16_t :0x17: STAT_TABLE[0].CODELEN -- PLAYER_CODELEN
// 156D:31F4: next round!
// 156D:454A - exclusive end of STAT_TABLE?
// 156D:4552 - 0x13 bytes for ?
// 156D:455F - ?
// 156D:4560 - ?
// 156D:4564 - 0x?? bytes for ?
// 156D:4569 - ?
// 156D:456B - real exclusive end of STAT_TABLE?
// 156D:456B:uint8_t: ?
// 156D:456B:uint8_t: THIS_BOARD.MAX_PLAYER_SHOTS
// 156D:456C:uint8_t: THIS_BOARD.IS_DARK
// 156D:456D:uint8_t: THIS_BOARD.EXITS.NORTH
// 156D:456E:uint8_t: THIS_BOARD.EXITS.SOUTH
// 156D:456F:uint8_t: THIS_BOARD.EXITS.WEST
// 156D:4570:uint8_t: THIS_BOARD.EXITS.EAST
// 156D:4571:uint8_t: THIS_BOARD.RESTART_ON_ZAP
// 156D:4572:pstring[58]: THIS_BOARD.MESSAGE
// 156D:45AD:uint8_t: THIS_BOARD.PLAYER_ENTER_X
// 156D:45AE:uint8_t: THIS_BOARD.PLAYER_ENTER_Y
// 156D:45AF:int16_t: THIS_BOARD.TIME_LIMIT
// TODO: - GAP -
// 156D:45B5: buffer?
// TODO: - GAP -
// 156D:45B8: buffer?
// TODO: - GAP -
// 156D:45C1: buffer?
// 156D:45C2:int16_t: ??? (max 100 - board count?)
// 156D:45C4:|0x04: BOARD_POINTERS[101]
// 156D:45C4:farptr: 0x00: BOARD_POINTERS[101].PTR
// 156D:45C6:farptr: 0x02: BOARD_POINTERS[101].SEG
// 156D:4758:int16_t: BOARD_LENGTHS[101]
// 156D:4822:int16_t: PLAYER_AMMO
// 156D:4824:int16_t: PLAYER_GEMS
// 156D:4826:int16_t: PLAYER_KEYS[7] - often offset by -1
// 156D:482D:int16_t: PLAYER_HEALTH
// 156D:482F:int16_t: CURRENT_BOARD_INDEX
// 156D:4831:int16_t: PLAYER_TORCH_TICKS
// 156D:4833:int16_t: PLAYER_TORCH_TICKS
// 156D:4835:int16_t: PLAYER_ENERGIZED_TICKS
// 156D:4837:int16_t: ???
// 156D:4839:int16_t: PLAYER_SCORE
// 156D:483B:pstring[20]: WORLD_NAME ?
// 156D:4850:pstring[10][20]: WORLD_FLAGS
// 156D:4922: ?
// 156D:4922:int16_t: TIME_LIMIT_CONSUMED
// 156D:4924:int16_t: ???
// 156D:4926:uint8_t: WORLD_IS_SAVE_FILE
// TODO: - GAP -
// 156D:4AD4:farptr: MAP_???.PTR
// 156D:4AD6:farptr: MAP_???.SEG
// 156D:4AD8:|0xC3:TYPE_TABLE[0x35]
// 156D:4AD8:uint8_t : 0x0: TYPE_TABLE[0].CHAR
// 156D:4AD9:uint8_t : 0x1: TYPE_TABLE[0].COLOR
// 156D:4ADA:uint8_t : 0x2: TYPE_TABLE[0].IS_DESTRUCTIBLE
// 156D:4ADB:uint8_t : 0x3: TYPE_TABLE[0].IS_PUSHABLE
// 156D:4ADC:uint8_t : 0x4: TYPE_TABLE[0].IS_VISIBLE_WHEN_DARK
// 156D:4ADD:uint8_t : 0x5: TYPE_TABLE[0].IS_EDITOR_FLOOR
// 156D:4ADE:uint8_t : 0x6: TYPE_TABLE[0].IS_FLOOR
// 156D:4ADF:uint8_t : 0x7: TYPE_TABLE[0].IS_SPECIAL_DRAW
// 156D:4AE0:uint16_t: 0x8: TYPE_TABLE[0].DRAW.IP
// 156D:4AE2:uint16_t: 0xA: TYPE_TABLE[0].DRAW.CS
// 156D:4AE4: int16_t: 0xC: TYPE_TABLE[0].CYCLE
// 156D:4AE6:uint16_t: 0xE: TYPE_TABLE[0].ACT.IP
// 156D:4AE8:uint16_t:0x10: TYPE_TABLE[0].ACT.CS
// 156D:4AEA:uint16_t:0x12: TYPE_TABLE[0].TOUCH.IP
// 156D:4AEC:uint16_t:0x14: TYPE_TABLE[0].TOUCH.CS
// 156D:4AEE:uint16_t:0x16: ???
// 156D:4AF0:uint8_t :0x18: ???
// 156D:4B9B: -- next round!
// 156D:602C:uint8_t : 0x0: TYPE_TABLE[0x1C].CHAR -- invisible wall
// 156D:602D:uint8_t : 0x1: TYPE_TABLE[0x1C].COLOR
// 156D:7337:: End of array
// 156D:73FA:: Real end of array
// 156D:73FA: int16_t: ???
// 156D:73FC:uint8_t : ??? UNUSED?
// 156D:73FD:uint8_t : ??? UNUSED?
// 156D:73FE:uint8_t : ??? UNUSED?
// 156D:73FF:uint8_t : ??? UNUSED?
// 156D:7400:uint8_t : ??? UNUSED?
// - SEEMINGLY UNUSED GAP -
// 156D:7406: int16_t: ???
// 156D:7408: int16_t: GLOBAL_TICK_COUNT
// 156D:740A: int16_t: ???
// 156D:740C:uint8_t : ???
// 156D:740D:uint8_t : ??? UNUSED?
// 156D:740E: --??-- : ???
// 156D:7410:uint8_t : ???
// 156D:7411:uint8_t : ??? (temp storage for A12A)
// - GAP -
// 156D:88C6: int16_t: ???
// 156D:88C8: int16_t: ???
// 156D:88CA:uint8_t : ???
// 156D:88CB:uint8_t : ???
// 156D:88CC:uint8_t : ???
// 156D:88CD:uint8_t : ???
// 156D:88CE:uint8_t : ???
// 156D:88CF: --??-- : ???
// 156D:88D0: int16_t: ???
// 156D:88D2: int16_t: ???
// 156D:88D4: int16_t: ???
// 156D:88D6: int16_t: ???
// 156D:88D8: int16_t: ???
// 156D:88DA: int16_t: ???
// 156D:88DC:uint8_t : ???
// 156D:88DD: --??-- : ???
// 156D:88DE: int16_t: ???
// 156D:88E0: int16_t: ???
// - GAP -
// 156D:8D06: int16_t: ??? (joystick-related)
// - GAP -
// ????:A125:uint8_t : ???
// ...
// ????:A12A:uint8_t : ???
// ...
// ????:A12C: int16_t: ???
// ????:A12E: int16_t: ???
// ...
// ????:A134:uint8_t : ???
// ????:A135:uint8_t : ???
// ????:A136:uint8_t : ???
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment