Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- loc_aca:
- lea loc_b90,a0 ; Load plane map address.
- move.w #$2A0,d0 ; Set repeat times.
- move.w #$8F02,4(a4) ; Set VDP auto increment to $02.
- move.w ($FFFF800E).w,d6 ; Write the VRAM address destination to convert into a VDP command.
- bsr.w ConvertVRAMAddress ; Convert it.
- move.l d7,4(a4) ; Set VDP address.
- loc_AE4:
- move.w (a0)+,(a4) ; Write first map tile into the VDP.
- dbf d0,loc_ae4 ; Repeat until finished.
- ; ---
- loc_B90:
- 00 00 00 00 orib #0,d0
- loc_b94 00 00 00 00 orib #0,d0
- loc_b98 00 00 00 00 orib #0,d0
- loc_b9c 00 00 00 00 orib #0,d0
- loc_ba0 00 00 00 00 orib #0,d0
- loc_ba4 00 00 00 00 orib #0,d0
- loc_ba8 00 00 00 00 orib #0,d0
- loc_bac 00 00 00 00 orib #0,d0
- loc_bb0 00 00 00 00 orib #0,d0
- loc_bb4 00 00 00 00 orib #0,d0
- loc_bb8 00 00 00 00 orib #0,d0
- loc_bbc 00 00 00 00 orib #0,d0
- loc_bc0 00 00 00 00 orib #0,d0
- loc_bc4 00 00 00 00 orib #0,d0
- loc_bc8 00 00 06 80 orib #-128,d0
- loc_bcc 00 00 06 00 orib #0,d0
- loc_bd0 00 00 00 87 orib #-121,d0
- loc_bd4 00 00 00 c8 orib #-56,d0
- loc_bd8 00 00 cc bc orib #-68,d0
- loc_bdc 00 0c .short 0x000c
- loc_bde bb cd cmpal a5,a5
- loc_be0 07 cb cc d0 movepl d3,a3@(-13104)
- loc_be4 44 dc move.w (a4)+,%ccr
- loc_be6 dd 00 addxb d0,d6
- loc_be8 74 6d moveq #109,d2
- loc_bea 00 00 09 89 orib #-119,d0
- loc_bee 00 00 00 00 orib #0,d0
- loc_bf2 00 00 00 00 orib #0,d0
- loc_bf6 00 00 00 00 orib #0,d0
- loc_bfa 00 00 00 00 orib #0,d0
- loc_bfe 00 00 00 00 orib #0,d0
- loc_c02 00 00 00 00 orib #0,d0
- loc_c06 00 00 00 00 orib #0,d0
- loc_c0a 00 00 00 00 orib #0,d0
- loc_c0e 00 00 00 00 orib #0,d0
- loc_c12 00 00 00 00 orib #0,d0
- loc_c16 00 09 .short 0x0009
- loc_c18 00 00 00 03 orib #3,d0
- loc_c1c 00 00 00 19 orib #25,d0
- loc_c20 00 00 04 9a orib #-102,d0
- loc_c24 00 00 19 a8 orib #-88,d0
- loc_c28 00 71 9a 91 01 46 a8 60 ori.w #-25967,(a1)(0000000000000000)@(ffffffffffffa860)
- loc_c30 15 8a .short 0x158a
- loc_c32 39 00 move.w d0,(a4)-
- loc_c34 69 55 bvss loc_c8b
- loc_c36 00 00 85 00 orib #0,d0
- loc_c3a 00 00 08 08 orib #8,d0
- loc_c3e 00 00 00 88 orib #-120,d0
- loc_c42 00 00 00 00 orib #0,d0
- loc_c46 00 00 00 00 orib #0,d0
- loc_c4a 00 00 00 00 orib #0,d0
- loc_c4e 00 00 00 00 orib #0,d0
- loc_c52 00 00 00 00 orib #0,d0
- loc_c56 00 72 00 00 07 13 00 00 63 15 ori.w #0,(a2)(0000000000000000,d0:w:8)@(0000000000006315)
- loc_c60 00 07 84 16 orib #22,d7
- loc_c64 00 63 91 20 ori.w #-28384,a3@-
- loc_c68 00 38 31 40 01 79 orib #64,loc_179
- loc_c6e 12 00 move.b d0,d1
- loc_c70 13 96 15 00 move.b (a6),(a1)(0000000000000000,d1:w:4)
- loc_c74 58 93 addq.l #4,a3@
- loc_c76 10 00 move.b d0,d0
- loc_c78 9a 31 00 00 subb (a1)(0000000000000000,d0:w),d5
- loc_c7c a5 10 .short 0xa510
- loc_c7e 00 00 61 00 orib #0,d0
- loc_c82 00 00 30 00 orib #0,d0
- loc_c86 00 00 00 00 orib #0,d0
- loc_c8a 00 00 00 00 orib #0,d0
- loc_c8e 00 00 00 00 orib #0,d0
- loc_c92 00 00 00 00 orib #0,d0
- loc_c96 00 00 00 00 orib #0,d0
- loc_c9a 00 00 00 00 orib #0,d0
- loc_c9e 00 00 00 00 orib #0,d0
- loc_ca2 00 00 00 00 orib #0,d0
- loc_ca6 00 00 00 00 orib #0,d0
- loc_caa 00 00 00 00 orib #0,d0
- loc_cae 00 00 00 00 orib #0,d0
- loc_cb2 00 00 00 00 orib #0,d0
- loc_cb6 00 00 00 00 orib #0,d0
- loc_cba 00 00 00 00 orib #0,d0
- loc_cbe 00 00 00 00 orib #0,d0
- loc_cc2 00 00 00 00 orib #0,d0
- loc_cc6 01 23 btst d0,a3@-
- loc_cc8 00 00 00 20 orib #32,d0
- loc_ccc 00 00 00 30 orib #48,d0
- loc_cd0 00 01 23 83 orib #-125,d1
- loc_cd4 00 00 00 31 orib #49,d0
- loc_cd8 00 00 00 20 orib #32,d0
- loc_cdc 00 00 00 10 orib #16,d0
- loc_ce0 00 00 00 00 orib #0,d0
- loc_ce4 00 00 00 00 orib #0,d0
- loc_ce8 00 00 00 00 orib #0,d0
- loc_cec 00 00 00 00 orib #0,d0
- loc_cf0 00 00 00 00 orib #0,d0
- loc_cf4 00 00 00 00 orib #0,d0
- loc_cf8 10 00 move.b d0,d0
- loc_cfa 00 00 20 00 orib #0,d0
- loc_cfe 00 00 30 00 orib #0,d0
- loc_d02 00 00 83 21 orib #33,d0
- loc_d06 00 00 30 10 orib #16,d0
- loc_d0a 00 00 20 20 orib #32,d0
- loc_d0e 00 00 11 30 orib #48,d0
- loc_d12 00 00 23 83 orib #-125,d0
- loc_d16 21 00 move.l d0,(a0)-
- loc_d18 00 30 00 00 00 20 orib #0,(a0)(0000000000000020,d0:w)
- loc_d1e 00 00 00 10 orib #16,d0
- loc_d22 00 00 00 00 orib #0,d0
- loc_d26 00 00 00 00 orib #0,d0
- loc_d2a 00 00 00 00 orib #0,d0
- loc_d2e 00 00 00 00 orib #0,d0
- loc_d32 00 00 00 00 orib #0,d0
- loc_d36 00 00 00 00 orib #0,d0
- loc_d3a 10 00 move.b d0,d0
- loc_d3c 00 00 20 00 orib #0,d0
- loc_d40 00 00 30 12 orib #18,d0
- loc_d44 00 01 41 00 orib #0,d1
- loc_d48 12 34 85 43 00 01 41 00 move.b (a4)(0000000000000000)@(0000000000014100),d1
- loc_d50 00 00 30 00 orib #0,d0
- loc_d54 00 00 20 00 orib #0,d0
- loc_d58 00 00 10 01 orib #1,d0
- loc_d5c 00 00 12 34 orib #52,d0
- loc_d60 00 00 00 01 orib #1,d0
- loc_d64 00 00 00 00 orib #0,d0
- loc_d68 00 00 00 00 orib #0,d0
- loc_d6c 00 00 00 00 orib #0,d0
- loc_d70 00 10 00 00 orib #0,(a0)
- loc_d74 00 20 00 00 orib #0,(a0)-
- loc_d78 00 30 00 00 01 41 orib #0,(a0)(0000000000000000)@(0000000000000000)
- loc_d7e 00 00 34 85 orib #-123,d0
- loc_d82 43 20 chkl (a0)-,d1
- loc_d84 01 41 bchg d0,d1
- loc_d86 00 00 21 30 orib #48,d0
- loc_d8a 00 00 10 20 orib #32,d0
- loc_d8e 00 00 20 10 orib #16,d0
- loc_d92 00 00 30 00 orib #0,d0
- loc_d96 00 00 41 00 orib #0,d0
- loc_d9a 00 00 85 43 orib #67,d0
- loc_d9e 21 00 move.l d0,(a0)-
- loc_da0 41 00 chkl d0,d0
- loc_da2 00 00 30 00 orib #0,d0
- loc_da6 00 00 20 00 orib #0,d0
- loc_daa 00 00 10 00 orib #0,d0
- loc_dae 00 00 00 00 orib #0,d0
- loc_db2 01 00 btst d0,d0
- loc_db4 00 00 02 00 orib #0,d0
- loc_db8 00 00 03 00 orib #0,d0
- loc_dbc 00 00 04 00 orib #0,d0
- loc_dc0 00 00 15 10 orib #16,d0
- loc_dc4 12 34 58 51 move.b (a4)(0000000000000051,d5:l),d1
- loc_dc8 00 00 15 12 orib #18,d0
- loc_dcc 00 00 01 23 orib #35,d0
- loc_dd0 00 00 03 04 orib #4,d0
- loc_dd4 00 00 02 15 orib #21,d0
- loc_dd8 00 12 34 58 orib #88,(a2)
- loc_ddc 00 00 00 15 orib #21,d0
- loc_de0 00 00 00 04 orib #4,d0
- loc_de4 00 00 00 03 orib #3,d0
- loc_de8 00 00 00 02 orib #2,d0
- loc_dec 00 00 00 01 orib #1,d0
- loc_df0 00 00 00 00 orib #0,d0
- loc_df4 00 00 00 00 orib #0,d0
- loc_df8 00 10 00 00 orib #0,(a0)
- loc_dfc 00 20 00 00 orib #0,(a0)-
- loc_e00 00 30 00 00 32 40 orib #0,(a0)(0000000000000040,d3:w:2)
- loc_e06 00 00 01 51 orib #81,d0
- loc_e0a 00 00 45 85 orib #-123,d0
- loc_e0e 43 21 chkl (a1)-,d1
- loc_e10 01 51 bchg d0,(a1)
- loc_e12 00 00 10 40 orib #64,d0
- loc_e16 00 00 54 32 orib #50,d0
- loc_e1a 10 00 move.b d0,d0
- loc_e1c 10 20 move.b (a0)-,d0
- loc_e1e 00 00 00 10 orib #16,d0
- loc_e22 00 00 00 00 orib #0,d0
- loc_e26 00 00 00 00 orib #0,d0
- loc_e2a 00 00 00 00 orib #0,d0
- loc_e2e 00 00
- Supposedly where it was planned to end; there's even another call to this address by another routine. Instead, it continues...:
- loc_E30: 00 00 orib #0,d0
- loc_e32 0f ff .short 0x0fff
- loc_e34 0e ed .short 0x0eed
- loc_e36 0c dc .short 0x0cdc
- loc_e38 0b ca 0b b9 movepl d5,(a2)(3001)
- loc_e3c 09 98 bclr d4,(a0)+
- loc_e3e 08 76 07 65 06 44 bchg #101,(a6)(0000000000000044,d0:w:8)
- loc_e44 01 00 btst d0,d0
- loc_e46 03 59 bchg d1,(a1)+
- loc_e48 00 25 00 01 orib #1,a5@-
- loc_e4c 00 8f .short 0x008f
- loc_e4e 00 bf .short 0x00bf
- ; ======================================================================
- CodemastersScreen:
- lea loc_634c,a0 ;
- moveq #0,d1 ;
- moveq #$28,d0 ;
- sub.w (a0),d0
- asr.w #1,d0 ;
- move.w ($FFFF8008).w,d2 ; Load Plane B VRAM address storage location to d2.
- moveq #1,d3 ; Set to write to palette line 1 (written in a subroutine in loc_ee6).
- bsr.w loc_ee6
- move.l #$40000010,d3 ; Load VDP VSRAM address to d3.
- moveq #$28,d1 ; Set scroll position.
- moveq #$6E,d2 ; Set scrolling timer.
- move.l d3,4(a4) ; Set VDP to VSRAM write.
- move.w #0,(a4) ; Don't scroll Plane A.
- move.w d1,(a4) ; Set Plane B scroll value.
- bsr.w EnableVDPDisplay ; Turn on the display.
- loc_E7E:
- bsr.w WaitforVBlank ; Wait for VBlank; delay VSRAM position updating.
- subq.l #1,d1 ; Subtract 1 (speed control).
- move.l d3,4(a4) ; Set VDP to VSRAM write.
- move.w #0,(a4) ; Don't scroll Plane A.
- move.w d1,(a4) ; Update VSRAM.
- dbf d2,loc_e7e ; Repeat to cause scrolling.
- moveq #$46,d2 ; Set screen timer.
- loc_E94:
- bsr.w WaitforVBlank ; Cause delay.
- bsr.w loc_756 ; TODO - Check controller output?
- cmpi.b #$FF,d0 ; Is anything being pressed?
- bne.s loc_ea6 ; If there is, branch.
- dbf d2,loc_e94 ; Wait until timer's run out.
- bsr.w DisableVDPDisplay ; Turn off the display.
- move.l d3,4(a4) ; Set VDP to VSRAM write.
- move.w #0,(a4) ; Disable Plane A scrolling.
- move.w #0,(a4) ; Disable Plane B scrolling.
- rts ; Return.
- ; ======================================================================
- loc_eb8:
- lea loc_3bb8,a0
- moveq #9,d0
- moveq #2,d1
- move.w ($FFFF8008).w,d2 ; Load Plane B VRAM address storage location to d2.
- moveq #1,d3 ; Set to load palette to palette line 1.
- bsr.w loc_ee6
- move.l #$C0000000,4(a4) ; Set VDP to CRAM write.
- move.w #$0400,(a4) ; Set 'GAME GENIE' splash screen backdrop to blue.
- rts ; Return.
- ; ======================================================================
- loc_ed8:
- lea loc_1b08,a0
- moveq #0,d0 ; Clear d0.
- moveq #0,d1 ; Clear d1.
- move.w ($FFFF8008).w,d2
- moveq #1,d3 ; Set palette line to 1.
- loc_ee6:
- link.w a6,#-8 ; Set a link of 8 bytes difference between a6 and a7.
- moveq #0,d4 ; Clear d4.
- move.w d0,-4(a6)
- move.w d1,-8(a6)
- move.w d2,-6(a6)
- move.w d3,-2(a6)
- move.l 6(a0),d0 ; Load TODO pointer into d0.
- move.w 4(a0),d1 ; Load TODO value into d1.
- asl.w #5,d1
- move.w ($FFFF8004).w,d6
- bsr.w loc_4e4
- movea.l $A(a0),a1
- moveq #$10,d0
- move.w -2(a6),d1 ; Set to write to palette line 1 (loc_636).
- bsr.w loc_636 ; Write gray palette to palette line 1.
- moveq #0,d0 ; Clear d0.
- move.w -2(a6),d1 ; TODO
- moveq #$D,d2 ; Set amount to shift by.
- asl.w d2,d1
- or.l d1,d0
- move.w d0,($FFFF800A).w ; Store in TODO register.
- move.w ($FFFF8004).w,d5
- lsr.w #5,d5
- move.w -4(a6),d0
- move.w -8(a6),d1 ; Load Plane B's starting address to d1 TODO IMPORTANT.
- move.w -6(a6),d6
- asl.w #7,d1
- asl.w #1,d0
- add.w d1,d6
- add.w d0,d6
- movea.l $E(a0),a1 ; Load the plane mappings address.
- move.w 2(a0),d1 ; Load the plane mappings Y size.
- loc_F4E:
- move.w (a0),d0 ; Load the plane mappings X size.
- bsr.w ConvertVRAMAddress ; Calculate the VRAM address.
- move.l d7,4(a4) ; Set VDP address.
- loc_F58:
- move.w (a1)+,d4 ; Dump the first tile.
- add.w d5,d4 ; Add the art tile.
- or.w ($FFFF800A).w,d4
- move.w d4,(a4) ; Dump to the screen.
- dbf d0,loc_f58 ; Repeat for X line.
- addi.w #$80,d6 ; Shift down a line.
- dbf d1,loc_f4e ; Repeat for Y line.
- move.w 4(a0),d1 ; Move VDP status register value into d1.
- asl.w #5,d1 ;
- add.w d1,($FFFF8004).w
- move.w #$8F02,4(a4) ; Set VDP auto increment to $02.
- unlk a6 ; Unlink a6.
- rts ; Return.
- loc_f82 00 00 31 fc orib #-4,d0
- loc_f86 00 01 80 58 orib #88,d1
- loc_f8a 31 fc 00 06 80 5a move.w #6,($FFFF805a
- loc_f90 31 fc 00 02 80 5c move.w #2,($FFFF805c
- loc_f96 31 fc 00 00 80 5e move.w #0,($FFFF805e
- loc_f9c 61 00 08 92 bsr.w loc_1830
- loc_fa0 41 f8 80 6a lea ($FFFF806a,a0
- loc_fa4 21 c8 80 62 move.l a0,($FFFF8062
- loc_fa8 3c 38 80 04 move.w ($FFFF8004,d6
- loc_fac 3a 06 move.w d6,d5
- loc_fae ea 45 asr.w #5,d5
- loc_fb0 31 c5 80 60 move.w d5,($FFFF8060
- loc_fb4 20 3c 00 00 2b 76 move.l #11126,d0
- loc_fba 32 38 2b 74 move.w loc_2b74,d1
- loc_fbe eb 41 asl.w #5,d1
- loc_fc0 d3 78 80 04 add.w d1,($FFFF8004
- loc_fc4 61 00 f5 1e bsr.w loc_4e4
- loc_fc8 43 f8 2b 54 lea loc_2b54,a1
- loc_fcc 70 10 moveq #16,d0
- loc_fce 72 03 moveq #3,d1
- loc_fd0 61 00 f6 64 bsr.w loc_636
- loc_fd4 43 f8 2b 34 lea loc_2b34,a1
- loc_fd8 70 10 moveq #16,d0
- loc_fda 72 00 moveq #0,d1
- loc_fdc 61 00 f6 58 bsr.w loc_636
- loc_fe0 29 7c c0 00 00 00 00 04 move.l #-1073741824,4(a4)
- loc_fe8 38 bc 04 00 move.w #1024,(a4)
- loc_fec 61 00 01 8c bsr.w loc_117a
- loc_ff0 61 00 02 6e bsr.w loc_1260
- loc_ff4 70 ff moveq #-1,d0
- loc_ff6 61 00 03 20 bsr.w loc_1318
- loc_ffa 31 fc 00 0f 80 68 move.w #15,($FFFF8068
- loc_1000 72 06 moveq #6,d1
- loc_1002 61 00 f9 12 bsr.w loc_916
- loc_1006 61 00 f7 3e bsr.w WaitforVBlank
- loc_100a 51 c9 ff f6 dbf d1,loc_1002
- loc_100e 61 00 f7 46 bsr.w loc_756
- loc_1012 0c 00 00 ff cmpi.b #-1,d0
- loc_1016 67 e2 beq.s loc_ffa
- loc_1018 36 00 move.w d0,d3
- loc_101a 08 00 00 07 btst #7,d0
- loc_101e 67 24 beq.s loc_1044
- loc_1020 61 00 02 f6 bsr.w loc_1318
- loc_1024 32 38 80 68 move.w ($FFFF8068,d1
- loc_1028 61 00 f8 ec bsr.w loc_916
- loc_102c 61 00 f7 18 bsr.w WaitforVBlank
- loc_1030 61 00 f7 24 bsr.w loc_756
- loc_1034 b0 03 cmp.b d3,d0
- loc_1036 66 c2 bne.s loc_ffa
- loc_1038 51 c9 ff ee dbf d1,loc_1028
- loc_103c 31 fc 00 0a 80 68 move.w #10,($FFFF8068
- loc_1042 60 dc bras loc_1020
- loc_1044 41 f8 80 6a lea ($FFFF806a,a0
- loc_1048 74 00 moveq #0,d2
- loc_104a 61 00 05 a6 bsr.w loc_15f2
- loc_104e 69 0c bvss loc_105c
- loc_1050 21 c1 80 92 move.l d1,($FFFF8092
- loc_1054 31 c0 80 96 move.w d0,($FFFF8096
- loc_1058 08 c2 00 00 bset #0,d2
- loc_105c 61 00 05 94 bsr.w loc_15f2
- loc_1060 69 1a bvss loc_107c
- loc_1062 08 02 00 00 btst #0,d2
- loc_1066 67 08 beq.s loc_1070
- loc_1068 b2 b8 80 92 cmp.l ($FFFF8092,d1
- loc_106c 67 00 00 d4 beq.w loc_1142
- loc_1070 21 c1 80 98 move.l d1,($FFFF8098
- loc_1074 31 c0 80 9c move.w d0,($FFFF809c
- loc_1078 08 c2 00 01 bset #1,d2
- loc_107c 61 00 05 74 bsr.w loc_15f2
- loc_1080 69 28 bvss loc_10aa
- loc_1082 08 02 00 00 btst #0,d2
- loc_1086 67 08 beq.s loc_1090
- loc_1088 b2 b8 80 92 cmp.l ($FFFF8092,d1
- loc_108c 67 00 00 b4 beq.w loc_1142
- loc_1090 08 02 00 01 btst #1,d2
- loc_1094 67 08 beq.s loc_109e
- loc_1096 b2 b8 80 98 cmp.l ($FFFF8098,d1
- loc_109a 67 00 00 a6 beq.w loc_1142
- loc_109e 21 c1 80 9e move.l d1,($FFFF809e
- loc_10a2 31 c0 80 a2 move.w d0,($FFFF80a2
- loc_10a6 08 c2 00 02 bset #2,d2
- loc_10aa 61 00 05 46 bsr.w loc_15f2
- loc_10ae 69 32 bvss loc_10e2
- loc_10b0 08 02 00 00 btst #0,d2
- loc_10b4 67 08 beq.s loc_10be
- loc_10b6 b2 b8 80 92 cmp.l ($FFFF8092,d1
- loc_10ba 67 00 00 86 beq.w loc_1142
- loc_10be 08 02 00 01 btst #1,d2
- loc_10c2 67 06 beq.s loc_10ca
- loc_10c4 b2 b8 80 98 cmp.l ($FFFF8098,d1
- loc_10c8 67 78 beq.s loc_1142
- loc_10ca 08 02 00 02 btst #2,d2
- loc_10ce 67 06 beq.s loc_10d6
- loc_10d0 b2 b8
Advertisement
Add Comment
Please, Sign In to add comment