63 lines
1.3 KiB
ArmAsm
63 lines
1.3 KiB
ArmAsm
; Test version - Load game.bin manually from Workbench CLI
|
|
; This helps us verify if the game code itself works
|
|
|
|
ORG $20000
|
|
|
|
START:
|
|
; Don't call Forbid - we're running from CLI
|
|
; move.l 4.w,a6
|
|
; jsr -132(a6)
|
|
|
|
; Save old view
|
|
lea CUSTOM,a6
|
|
move.w INTENAR(a6),d0
|
|
or.w #$8000,d0
|
|
move.w d0,OldIntEna
|
|
move.w DMACONR(a6),d0
|
|
or.w #$8000,d0
|
|
move.w d0,OldDmaCon
|
|
|
|
; Disable all interrupts and DMA
|
|
move.w #$7FFF,INTENA(a6)
|
|
move.w #$7FFF,DMACON(a6)
|
|
move.w #$7FFF,INTREQ(a6)
|
|
|
|
; Initialize Subsystems
|
|
bsr InitGraphics
|
|
bsr InitGameLogic
|
|
|
|
; Enable DMA for Copper, Bitplanes, Blitter
|
|
move.w #$83C0,DMACON(a6) ; Set DMAEN, BPLEN, COPEN, BLTEN
|
|
|
|
MAIN_LOOP:
|
|
; Wait for vertical blank
|
|
bsr WaitVBlank
|
|
|
|
; 1. Read Input
|
|
bsr ReadInput
|
|
|
|
; 2. Update Game Logic
|
|
bsr UpdateGame
|
|
|
|
; 3. Check for Exit (Left Mouse Button for now)
|
|
btst #6,CIAA
|
|
bne.s MAIN_LOOP
|
|
|
|
EXIT:
|
|
; Restore System
|
|
lea CUSTOM,a6
|
|
move.w #$7FFF,DMACON(a6)
|
|
move.w #$7FFF,INTENA(a6)
|
|
|
|
move.w OldDmaCon,DMACON(a6)
|
|
move.w OldIntEna,INTENA(a6)
|
|
|
|
; Enable multitasking
|
|
move.l 4.w,a6
|
|
jsr -138(a6) ; Permit
|
|
|
|
moveq #0,d0 ; Return code 0
|
|
rts
|
|
|
|
; ... rest of the code stays the same
|