mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-11-29 11:50:25 +00:00
207 lines
5.0 KiB
ArmAsm
207 lines
5.0 KiB
ArmAsm
REL
|
|
DSK MAINSEG
|
|
|
|
use Locator.Macs
|
|
use Load.Macs
|
|
use Mem.Macs
|
|
use Misc.Macs
|
|
use Util.Macs
|
|
use EDS.GSOS.Macs
|
|
use GTE.Macs
|
|
|
|
use ../../src/Defs.s
|
|
|
|
mx %00
|
|
|
|
TSZelda EXT ; tileset buffer
|
|
|
|
ScreenX equ 0
|
|
ScreenY equ 2
|
|
|
|
; Typical init
|
|
phk
|
|
plb
|
|
|
|
sta MyUserId ; GS/OS passes the memory manager user ID for the aoplication into the program
|
|
_MTStartUp ; GTE requires the miscellaneous toolset to be running
|
|
|
|
jsr GTEStartUp ; Load and install the GTE User Tool
|
|
|
|
; Initialize the graphics screen to a 256x160 playfield
|
|
|
|
pea #256
|
|
pea #160
|
|
_GTESetScreenMode
|
|
|
|
; Load a tileset
|
|
|
|
pea #^TSZelda
|
|
pea #TSZelda
|
|
_GTELoadTileSet
|
|
|
|
; Manually fill in the 41x26 tiles of the TileStore with a test pattern.
|
|
|
|
ldx #0
|
|
ldy #0
|
|
|
|
:loop
|
|
phx
|
|
phy
|
|
|
|
phx
|
|
phy
|
|
pei 0
|
|
_GTESetTile
|
|
|
|
lda 0
|
|
inc
|
|
and #$001F
|
|
sta 0
|
|
|
|
ply
|
|
plx
|
|
inx
|
|
cpx #41
|
|
bcc :loop
|
|
|
|
ldx #0
|
|
iny
|
|
cpy #26
|
|
bcc :loop
|
|
|
|
; Set the origin of the screen
|
|
|
|
lda #3
|
|
sta ScreenX
|
|
lda #10
|
|
sta ScreenY
|
|
|
|
pea #3
|
|
pea #10
|
|
_GTESetBG0Origin
|
|
|
|
; Very simple actions
|
|
:evt_loop
|
|
pha ; space for result, with pattern
|
|
_GTEReadControl
|
|
pla
|
|
and #$00FF
|
|
cmp #'q'
|
|
beq :exit
|
|
|
|
cmp #$15 ; left = $08, right = $15, up = $0B, down = $0A
|
|
bne :8
|
|
inc ScreenX
|
|
bra :next
|
|
|
|
:8 cmp #$08
|
|
bne :9
|
|
dec ScreenX
|
|
bra :next
|
|
|
|
:9 cmp #$0B
|
|
bne :10
|
|
inc ScreenY
|
|
bra :next
|
|
|
|
:10 cmp #$0A
|
|
bne :next
|
|
dec ScreenY
|
|
|
|
:next
|
|
pei ScreenX
|
|
pei ScreenY
|
|
_GTESetBG0Origin
|
|
|
|
_GTERender
|
|
|
|
; Debug stuff
|
|
ldx #$100
|
|
lda StartX,x
|
|
ldx #0
|
|
jsr DrawWord
|
|
|
|
ldx #$100
|
|
lda StartY,x
|
|
ldx #160*8
|
|
jsr DrawWord
|
|
|
|
lda ScreenX
|
|
ldx #160*16
|
|
jsr DrawWord
|
|
|
|
lda ScreenY
|
|
ldx #160*24
|
|
jsr DrawWord
|
|
|
|
tdc
|
|
ldx #160*32
|
|
jsr DrawWord
|
|
|
|
brl :evt_loop
|
|
|
|
; Shut down everything
|
|
:exit
|
|
_GTEShutDown
|
|
_QuitGS qtRec
|
|
qtRec adrl $0000
|
|
da $00
|
|
|
|
; Load the GTE User Tool and install it
|
|
GTEStartUp
|
|
pea $0000
|
|
_LoaderStatus
|
|
pla
|
|
|
|
pea $0000
|
|
pea $0000
|
|
pea $0000
|
|
pea $0000
|
|
pea $0000 ; result space
|
|
|
|
lda MyUserId
|
|
pha
|
|
|
|
pea #^ToolPath
|
|
pea #ToolPath
|
|
pea $0001 ; do not load into special memory
|
|
_InitialLoad
|
|
bcc :ok1
|
|
brk $01
|
|
|
|
:ok1
|
|
ply
|
|
pla ; Address of the loaded tool
|
|
plx
|
|
ply
|
|
ply
|
|
|
|
pea $8000 ; User toolset
|
|
pea $00A0 ; Set the tool set number
|
|
phx
|
|
pha ; Address of function pointer table
|
|
_SetTSPtr
|
|
bcc :ok2
|
|
brk $02
|
|
|
|
:ok2
|
|
clc ; Give GTE a page of direct page memory
|
|
tdc
|
|
adc #$0100
|
|
pha
|
|
pea $0000 ; No extra capabilities
|
|
lda MyUserId ; Pass the userId for memory allocation
|
|
pha
|
|
_GTEStartUp
|
|
bcc :ok3
|
|
brk $03
|
|
|
|
:ok3
|
|
rts
|
|
|
|
MyUserId ds 2
|
|
ToolPath str '1/Tool160'
|
|
|
|
PUT App.Msg.s
|
|
PUT font.s
|