Prev: E600 Up: Map Next: E8FE
E810: Called once the memory map has been setup
Clears the 128K mode flag and enters the common start-up path with a relocation count of three.
entry_48k E810 XOR A Set 128K flag to zero (48K mode)
E811 LD B,$03 3 relocations to do in 48K mode
E813 JP entry_common Jump to common
entry_128k E816 CALL clear_playfield_attrs Call clear_playfield_attrs
E819 LD A,$01 Set 128K flag to one (128K mode)
E81B LD B,$05 5 relocations to do in 128K mode
entry_common E81D LD ($A139),A Store 128K mode flag
E820 LD SP,$0000 Put stack at end of RAM
E823 PUSH BC Preserve the count in B
E824 LD HL,$F5BE Copy marquee initial pixels to the top of the screen
E827 LD DE,$4000
E82A LD BC,$0800
E82D LDIR
E82F LD DE,$5800 Copy marquee initial attributes to the top of the attribute file
E832 INC B
E833 LDIR
E835 AND A Call stop_the_tape_48k if not in 128K mode
E836 CALL Z,stop_the_tape_48k
Now that "stop the tape" has run we can relocate the game into position.
E839 POP BC Restore B
E83A LD HL,$E858 Point HL at relocations
entrypt_relocate_loop E83D PUSH BC Preserve B
E83E LD E,(HL) DE = wordat(HL); HL += 2
E83F INC HL
E840 LD D,(HL)
E841 INC HL
E842 PUSH DE Stack source pointer
E843 LD E,(HL) DE = wordat(HL); HL += 2 -- Destination pointer
E844 INC HL
E845 LD D,(HL)
E846 INC HL
E847 LD C,(HL) BC = wordat(HL); HL += 2 -- Count
E848 INC HL
E849 LD B,(HL)
E84A INC HL
E84B EX (SP),HL Exchange top of stack and HL. HL is now source pointer
E84C LDIR Copy
E84E POP HL Restore base pointer and count
E84F POP BC
E850 DJNZ entrypt_relocate_loop Loop while B > 0
E852 LD SP,$ED28 Set up the stack
E855 JP bootstrap Exit via bootstrap -- start the game
relocations E858 DEFW data_e88e Copy 24 bytes from data_e88e to $EC00
E85A DEFW $EC00
E85C DEFW $0018
E85E DEFW square_transition_mask Copy 40 bytes from square_transition_mask to $EB00
E860 DEFW $EB00
E862 DEFW $0028
E864 DEFW diamond_transition_mask Copy 48 bytes from diamond_transition_mask to $EA00
E866 DEFW $EA00
E868 DEFW $0030
E86A DEFW load_stage_128k Copy 926 bytes from load_stage_128k onwards to $8014 [128K only]
E86C DEFW load_stage
E86E DEFW $039E
E870 DEFW hooks_128k Copy 24 bytes (3 bytes * 8 hooks) from hooks_128k to hooks at start_siren_hook [128K only]
E872 DEFW start_siren_hook
E874 DEFW $0018
hooks_128k E876 JP $8045 Replaces 48K start_siren_hook
E879 JP $805D Replaces 48K play_regular_sfx_hook
E87C JP $8091 Replaces 48K silence_audio_hook
E87F JP $8096 Replaces 48K write_audio_registers_hook
E882 JP $80E5 Replaces 48K setup_engine_sfx_hook
E885 JP tl_80ee Replaces 48K play_engine_sfx_hook
E888 JP $8136 Replaces 48K play_speech_hook
E88B JP $820F Replaces 48K attract_mode_hook
Copied to $EC00 - transitions?
data_e88e E88E DEFB $06 6 frames
E88F DEFW $EAF8 Address of frames
E891 DEFB $0C 12 frames
E892 DEFW $E35C Address of frames
E894 DEFB $08 8 frames
E895 DEFW $E3B4 Address of frames
E897 DEFB $07 7 frames
E898 DEFW $E9F8 Address of frames
E89A DEFB $06 6 frames
E89B DEFW $EB28 Address of frames
E89D DEFB $0C 12 frames
E89E DEFW $E3BC Address of frames
E8A0 DEFB $08 8 frames
E8A1 DEFW $E3F4 Address of frames
E8A3 DEFB $07 7 frames
E8A4 DEFW $EA30 Address of frames
Square zoom in animation mask (8x8, 5 frames)
This is relocated.
anim-e8a6
graphic-e8a6
square_transition_mask E8A6 DEFB $00,$00,$00,$10,$00,$00,$00,$00
E8AE DEFB $00,$00,$00,$18,$18,$00,$00,$00
E8B6 DEFB $00,$00,$3C,$3C,$3C,$3C,$00,$00
E8BE DEFB $00,$7E,$7E,$7E,$7E,$7E,$7E,$00
E8C6 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Diamond zoom in animation mask (8x8, 6 frames)
This is relocated.
anim-e8ce
graphic-e8ce
diamond_transition_mask E8CE DEFB $81,$42,$24,$18,$18,$24,$42,$81
E8D6 DEFB $81,$C3,$66,$3C,$3C,$66,$C3,$81
E8DE DEFB $C3,$E7,$7E,$3C,$3C,$7E,$E7,$C3
E8E6 DEFB $C3,$E7,$FF,$7E,$7E,$FF,$E7,$C3
E8EE DEFB $E7,$FF,$FF,$7E,$7E,$FF,$FF,$E7
E8F6 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Prev: E600 Up: Map Next: E8FE