mirror of
https://github.com/robmcmullen/fujirun.git
synced 2024-06-01 03:41:32 +00:00
First cut at separating out platform specific stuff
This commit is contained in:
parent
03d912eaba
commit
4e6a8ecf20
64
Makefile
64
Makefile
|
@ -8,48 +8,52 @@ player-missile.hgr: player-missile.png
|
||||||
quicksprite.py player-missile.png
|
quicksprite.py player-missile.png
|
||||||
|
|
||||||
kansasfest-hackfest.hgr: kansasfest-hackfest.png
|
kansasfest-hackfest.hgr: kansasfest-hackfest.png
|
||||||
cp kansasfest-hackfest.png tmphgr-kansasfest-hackfest-top.png
|
cp kansasfest-hackfest.png _apple2-kansasfest-hackfest-top.png
|
||||||
$(TOHGR) tmphgr-kansasfest-hackfest-top.png
|
$(TOHGR) _apple2-kansasfest-hackfest-top.png
|
||||||
cp kansasfest-hackfest.png tmphgr-kansasfest-hackfest-bot.png
|
cp kansasfest-hackfest.png _apple2-kansasfest-hackfest-bot.png
|
||||||
quicksprite.py -i bw tmphgr-kansasfest-hackfest-bot.png
|
quicksprite.py -i bw _apple2-kansasfest-hackfest-bot.png
|
||||||
quicksprite.py --merge 96 -o kansasfest-hackfest tmphgr-kansasfest-hackfest-top.hgr tmphgr-kansasfest-hackfest-bot.hgr
|
quicksprite.py --merge 96 -o kansasfest-hackfest _apple2-kansasfest-hackfest-top.hgr _apple2-kansasfest-hackfest-bot.hgr
|
||||||
|
|
||||||
partycrasher-software.hgr: partycrasher-software.png
|
partycrasher-software.hgr: partycrasher-software.png
|
||||||
cp partycrasher-software.png tmphgr-partycrasher-software-top.png
|
cp partycrasher-software.png _apple2-partycrasher-software-top.png
|
||||||
$(TOHGR) tmphgr-partycrasher-software-top.png
|
$(TOHGR) _apple2-partycrasher-software-top.png
|
||||||
cp partycrasher-software.png tmphgr-partycrasher-software-bot.png
|
cp partycrasher-software.png _apple2-partycrasher-software-bot.png
|
||||||
quicksprite.py -i bw tmphgr-partycrasher-software-bot.png
|
quicksprite.py -i bw _apple2-partycrasher-software-bot.png
|
||||||
quicksprite.py --merge 116 -o partycrasher-software tmphgr-partycrasher-software-top.hgr tmphgr-partycrasher-software-bot.hgr
|
quicksprite.py --merge 116 -o partycrasher-software _apple2-partycrasher-software-top.hgr _apple2-partycrasher-software-bot.hgr
|
||||||
|
|
||||||
title.hgr: title.png
|
title.hgr: title.png
|
||||||
cp title.png tmphgr-title-top.png
|
cp title.png _apple2-title-top.png
|
||||||
$(TOHGR) tmphgr-title-top.png
|
$(TOHGR) _apple2-title-top.png
|
||||||
cp title.png tmphgr-title-bot.png
|
cp title.png _apple2-title-bot.png
|
||||||
quicksprite.py -i bw tmphgr-title-bot.png
|
quicksprite.py -i bw _apple2-title-bot.png
|
||||||
quicksprite.py --merge 136 167 -o title tmphgr-title-top.hgr tmphgr-title-bot.hgr
|
quicksprite.py --merge 136 167 -o title _apple2-title-top.hgr _apple2-title-bot.hgr
|
||||||
|
|
||||||
working-sprite-driver.s: $(SPRITES) fatfont128.dat
|
_apple2-working-sprite-driver.s: $(SPRITES) fatfont128.dat
|
||||||
quicksprite.py -a mac65 -p 6502 -s hgrbw -m -k -d -g -f fatfont128.dat -o working $(SPRITES)
|
quicksprite.py -a mac65 -p 6502 -s hgrbw -m -k -d -g -f fatfont128.dat -o _apple2-working $(SPRITES)
|
||||||
|
|
||||||
working.xex: working.s wipes-null.s main.s constants.s rand.s maze.s working-sprite-driver.s vars.s debug.s actors.s background.s screen.s logic.s
|
_apple2-working.xex: wipes-null.s main.s constants.s rand.s maze.s _apple2-working-sprite-driver.s vars.s debug.s actors.s background.s screen.s logic.s platform-apple2.s
|
||||||
rm -f working.xex
|
rm -f _apple2-working.xex
|
||||||
atasm -mae -oworking.xex working.s -Lworking.var -gworking.lst
|
echo '.include "main.s"' > _apple2-working.s
|
||||||
|
echo '.include "wipes-null.s"' >> _apple2-working.s
|
||||||
|
echo '.include "platform-apple2.s"' >> _apple2-working.s
|
||||||
|
atasm -mae -o_apple2-working.xex _apple2-working.s -L_apple2-working.var -g_apple2-working.lst
|
||||||
|
|
||||||
working.dsk: working.xex
|
working.dsk: _apple2-working.xex
|
||||||
rm -f working.dsk
|
rm -f working.dsk
|
||||||
atrcopy working.dsk boot -b working.xex --brun 6000 -f
|
atrcopy working.dsk boot -b _apple2-working.xex --brun 6000 -f
|
||||||
#cp working.var /home/rob/.wine/drive_c/applewin/APPLE2E.SYM
|
#cp working.var /home/rob/.wine/drive_c/applewin/APPLE2E.SYM
|
||||||
|
|
||||||
demo.xex: demo.s wipes-demo.s main.s constants.s rand.s maze.s working-sprite-driver.s vars.s debug.s actors.s background.s screen.s logic.s
|
_apple2-demo.xex: wipes-demo.s main.s constants.s rand.s maze.s _apple2-working-sprite-driver.s vars.s debug.s actors.s background.s screen.s logic.s platform-apple2.s
|
||||||
rm -f demo.xex
|
rm -f _apple2-demo.xex
|
||||||
atasm -mae -odemo.xex demo.s -Ldemo.var -gdemo.lst
|
echo '.include "main.s"' > _apple2-demo.s
|
||||||
|
echo '.include "wipes-demo.s"' >> _apple2-demo.s
|
||||||
|
echo '.include "platform-apple2.s"' >> _apple2-demo.s
|
||||||
|
atasm -mae -o_apple2-demo.xex _apple2-demo.s -L_apple2-demo.var -g_apple2-demo.lst
|
||||||
|
|
||||||
demo.dsk: demo.xex logic.s player-missile.hgr partycrasher-software.hgr kansasfest-hackfest.hgr title.hgr
|
demo.dsk: _apple2-demo.xex logic.s player-missile.hgr partycrasher-software.hgr kansasfest-hackfest.hgr title.hgr
|
||||||
atrcopy demo.dsk boot -d partycrasher-software.hgr@2000 player-missile.hgr@4000 kansasfest-hackfest.hgr@2000 title.hgr@4001 -b demo.xex --brun 6000 -f
|
atrcopy demo.dsk boot -d partycrasher-software.hgr@2000 player-missile.hgr@4000 kansasfest-hackfest.hgr@2000 title.hgr@4001 -b _apple2-demo.xex --brun 6000 -f
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f player-missile.hgr player-missile.hgr.png partycrasher-software.hgr kansasfest-hackfest.hgr title.hgr
|
rm -f player-missile.hgr player-missile.hgr.png partycrasher-software.hgr kansasfest-hackfest.hgr title.hgr
|
||||||
rm -f tmphgr-*
|
rm -f _apple2-* working.dsk demo.dsk
|
||||||
rm -f working.dsk working.xex working-*.s
|
|
||||||
rm -f demo.dsk demo.xex
|
|
||||||
rm -f *.lst *.var
|
rm -f *.lst *.var
|
||||||
|
|
132
main.s
132
main.s
|
@ -3,18 +3,6 @@
|
||||||
.include "macros.s"
|
.include "macros.s"
|
||||||
.include "constants.s"
|
.include "constants.s"
|
||||||
|
|
||||||
; os memory map
|
|
||||||
KEYBOARD = $c000
|
|
||||||
KBDSTROBE = $c010
|
|
||||||
CLRTEXT = $c050
|
|
||||||
SETTEXT = $c051
|
|
||||||
CLRMIXED = $c052
|
|
||||||
SETMIXED = $c053
|
|
||||||
TXTPAGE1 = $c054
|
|
||||||
TXTPAGE2 = $c055
|
|
||||||
CLRHIRES = $c056
|
|
||||||
SETHIRES = $c057
|
|
||||||
|
|
||||||
; Zero page locations. Using the whole thing because we aren't using any
|
; Zero page locations. Using the whole thing because we aren't using any
|
||||||
; ROM routines
|
; ROM routines
|
||||||
|
|
||||||
|
@ -121,11 +109,7 @@ frame_count .ds 2
|
||||||
|
|
||||||
*= $6000
|
*= $6000
|
||||||
|
|
||||||
start nop
|
start jsr set_hires ; start with HGR page 1, full screen
|
||||||
bit CLRTEXT ; start with HGR page 1, full screen
|
|
||||||
bit CLRMIXED
|
|
||||||
bit TXTPAGE1
|
|
||||||
bit SETHIRES
|
|
||||||
|
|
||||||
;jsr clrscr
|
;jsr clrscr
|
||||||
jsr init_once
|
jsr init_once
|
||||||
|
@ -150,10 +134,7 @@ check_restart ldx #34
|
||||||
jsr printstr ; prints to back page, so have to flip pages to show
|
jsr printstr ; prints to back page, so have to flip pages to show
|
||||||
jsr pageflip
|
jsr pageflip
|
||||||
|
|
||||||
lda KBDSTROBE ; any key restarts
|
jsr any_key
|
||||||
?1 lda KEYBOARD
|
|
||||||
bpl ?1
|
|
||||||
lda KBDSTROBE
|
|
||||||
jmp restart
|
jmp restart
|
||||||
|
|
||||||
game_text .byte "GAME ",0
|
game_text .byte "GAME ",0
|
||||||
|
@ -167,31 +148,6 @@ init_once
|
||||||
jsr init_actors_once
|
jsr init_actors_once
|
||||||
rts
|
rts
|
||||||
|
|
||||||
clrscr
|
|
||||||
lda #0
|
|
||||||
sta clr1+1
|
|
||||||
lda #$20
|
|
||||||
sta clr1+2
|
|
||||||
clr0
|
|
||||||
lda #$81
|
|
||||||
ldy #0
|
|
||||||
clr1
|
|
||||||
sta $ffff,y
|
|
||||||
iny
|
|
||||||
bne clr1
|
|
||||||
inc clr1+2
|
|
||||||
ldx clr1+2
|
|
||||||
cpx #$40
|
|
||||||
bcc clr1
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
ldx #39
|
|
||||||
?1 jsr text_put_col ; text page 1
|
|
||||||
jsr text_put_col2 ; text page 2
|
|
||||||
dex
|
|
||||||
bpl ?1
|
|
||||||
rts
|
|
||||||
|
|
||||||
title_screen nop
|
title_screen nop
|
||||||
lda #1
|
lda #1
|
||||||
sta config_num_players
|
sta config_num_players
|
||||||
|
@ -328,89 +284,6 @@ handle_player nop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
userinput
|
|
||||||
lda KEYBOARD
|
|
||||||
pha
|
|
||||||
ldx #38
|
|
||||||
ldy #23
|
|
||||||
jsr debughex
|
|
||||||
ldx #0
|
|
||||||
pla
|
|
||||||
bpl input_not_movement ; stop movement of player if no direction input
|
|
||||||
|
|
||||||
; setting the keyboard strobe causes the key to enter repeat mode if held
|
|
||||||
; down, which causes a pause after the initial movement. Not setting the
|
|
||||||
; strobe allows smooth movement from the start, but there's no way to stop
|
|
||||||
;sta KBDSTROBE
|
|
||||||
|
|
||||||
check_up cmp #$8d ; up arrow
|
|
||||||
beq input_up
|
|
||||||
cmp #$c9 ; I
|
|
||||||
bne check_down
|
|
||||||
input_up lda #TILE_UP
|
|
||||||
sta actor_input_dir,x
|
|
||||||
rts
|
|
||||||
|
|
||||||
check_down cmp #$af ; down arrow
|
|
||||||
beq input_down
|
|
||||||
cmp #$d4 ; K
|
|
||||||
bne check_left
|
|
||||||
input_down lda #TILE_DOWN
|
|
||||||
sta actor_input_dir,x
|
|
||||||
rts
|
|
||||||
|
|
||||||
check_left cmp #$88 ; left arrow
|
|
||||||
beq input_left
|
|
||||||
cmp #$c8 ; J
|
|
||||||
bne check_right
|
|
||||||
input_left lda #TILE_LEFT
|
|
||||||
sta actor_input_dir,x
|
|
||||||
rts
|
|
||||||
|
|
||||||
check_right cmp #$95 ; right arrow
|
|
||||||
beq input_right
|
|
||||||
cmp #$ce ; L
|
|
||||||
bne input_not_movement
|
|
||||||
input_right lda #TILE_RIGHT
|
|
||||||
sta actor_input_dir,x
|
|
||||||
rts
|
|
||||||
|
|
||||||
input_not_movement lda #0
|
|
||||||
sta actor_input_dir,x
|
|
||||||
|
|
||||||
check_special cmp #$80 + 32
|
|
||||||
beq input_space
|
|
||||||
cmp #$80 + '.'
|
|
||||||
beq input_period
|
|
||||||
cmp #$80 + 'P'
|
|
||||||
beq input_period
|
|
||||||
rts
|
|
||||||
|
|
||||||
input_space
|
|
||||||
jmp debugflipscreens
|
|
||||||
|
|
||||||
input_period
|
|
||||||
jsr wait
|
|
||||||
lda KEYBOARD
|
|
||||||
bpl input_period
|
|
||||||
cmp #$80 + 'P'
|
|
||||||
beq input_period
|
|
||||||
rts
|
|
||||||
|
|
||||||
debugflipscreens
|
|
||||||
lda #20
|
|
||||||
sta scratch_count
|
|
||||||
debugloop
|
|
||||||
jsr pageflip
|
|
||||||
jsr wait
|
|
||||||
jsr pageflip
|
|
||||||
jsr wait
|
|
||||||
dec scratch_count
|
|
||||||
bne debugloop
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
wait
|
wait
|
||||||
ldy #$06 ; Loop a bit
|
ldy #$06 ; Loop a bit
|
||||||
wait_outer
|
wait_outer
|
||||||
|
@ -431,7 +304,6 @@ wait_inner
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.include "working-sprite-driver.s"
|
|
||||||
.include "rand.s"
|
.include "rand.s"
|
||||||
.include "screen.s"
|
.include "screen.s"
|
||||||
.include "maze.s"
|
.include "maze.s"
|
||||||
|
|
136
platform-apple2.s
Normal file
136
platform-apple2.s
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
|
||||||
|
; os memory map
|
||||||
|
KEYBOARD = $c000
|
||||||
|
KBDSTROBE = $c010
|
||||||
|
CLRTEXT = $c050
|
||||||
|
SETTEXT = $c051
|
||||||
|
CLRMIXED = $c052
|
||||||
|
SETMIXED = $c053
|
||||||
|
TXTPAGE1 = $c054
|
||||||
|
TXTPAGE2 = $c055
|
||||||
|
CLRHIRES = $c056
|
||||||
|
SETHIRES = $c057
|
||||||
|
|
||||||
|
set_hires bit CLRTEXT ; start with HGR page 1, full screen
|
||||||
|
bit CLRMIXED
|
||||||
|
bit TXTPAGE1
|
||||||
|
bit SETHIRES
|
||||||
|
|
||||||
|
; wait for any key
|
||||||
|
any_key lda KBDSTROBE
|
||||||
|
?1 lda KEYBOARD
|
||||||
|
bpl ?1
|
||||||
|
lda KBDSTROBE
|
||||||
|
rts
|
||||||
|
|
||||||
|
; clear all screens, hires and text
|
||||||
|
clrscr lda #$20
|
||||||
|
sta clrscr_smc+2
|
||||||
|
lda #$81
|
||||||
|
ldy #0
|
||||||
|
clrscr_smc sta $ff00,y
|
||||||
|
iny
|
||||||
|
bne clrscr_smc
|
||||||
|
inc clrscr_smc+2
|
||||||
|
ldx clrscr_smc+2
|
||||||
|
cpx #$40
|
||||||
|
bcc clrscr_smc
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
ldx #39
|
||||||
|
?1 jsr text_put_col ; text page 1
|
||||||
|
jsr text_put_col2 ; text page 2
|
||||||
|
dex
|
||||||
|
bpl ?1
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
; process gameplay user input. Sets actor_input_dir and various debugging
|
||||||
|
; input
|
||||||
|
userinput lda KEYBOARD
|
||||||
|
pha
|
||||||
|
ldx #38
|
||||||
|
ldy #23
|
||||||
|
jsr debughex
|
||||||
|
ldx #0
|
||||||
|
pla
|
||||||
|
bpl input_not_movement ; stop movement of player if no direction input
|
||||||
|
|
||||||
|
; setting the keyboard strobe causes the key to enter repeat mode if held
|
||||||
|
; down, which causes a pause after the initial movement. Not setting the
|
||||||
|
; strobe allows smooth movement from the start, but there's no way to stop
|
||||||
|
;sta KBDSTROBE
|
||||||
|
|
||||||
|
check_up cmp #$8d ; up arrow
|
||||||
|
beq input_up
|
||||||
|
cmp #$c1 ; 'A' key
|
||||||
|
beq input_up
|
||||||
|
cmp #$c9 ; I
|
||||||
|
bne check_down
|
||||||
|
input_up lda #TILE_UP
|
||||||
|
sta actor_input_dir,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
check_down cmp #$af ; down arrow
|
||||||
|
beq input_down
|
||||||
|
cmp #$bb ; ';' key (dvorak keyboards)
|
||||||
|
beq input_down
|
||||||
|
cmp #$da ; 'Z' key
|
||||||
|
beq input_down
|
||||||
|
cmp #$d4 ; K
|
||||||
|
bne check_left
|
||||||
|
input_down lda #TILE_DOWN
|
||||||
|
sta actor_input_dir,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
check_left cmp #$88 ; left arrow
|
||||||
|
beq input_left
|
||||||
|
cmp #$c8 ; J
|
||||||
|
bne check_right
|
||||||
|
input_left lda #TILE_LEFT
|
||||||
|
sta actor_input_dir,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
check_right cmp #$95 ; right arrow
|
||||||
|
beq input_right
|
||||||
|
cmp #$ce ; L
|
||||||
|
bne input_not_movement
|
||||||
|
input_right lda #TILE_RIGHT
|
||||||
|
sta actor_input_dir,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
input_not_movement lda #0
|
||||||
|
sta actor_input_dir,x
|
||||||
|
|
||||||
|
check_special cmp #$80 + 32
|
||||||
|
beq input_space
|
||||||
|
cmp #$80 + '.'
|
||||||
|
beq input_period
|
||||||
|
cmp #$80 + 'P'
|
||||||
|
beq input_period
|
||||||
|
rts
|
||||||
|
|
||||||
|
input_space
|
||||||
|
jmp debugflipscreens
|
||||||
|
|
||||||
|
input_period
|
||||||
|
jsr wait
|
||||||
|
lda KEYBOARD
|
||||||
|
bpl input_period
|
||||||
|
cmp #$80 + 'P'
|
||||||
|
beq input_period
|
||||||
|
rts
|
||||||
|
|
||||||
|
debugflipscreens
|
||||||
|
lda #20
|
||||||
|
sta scratch_count
|
||||||
|
debugloop
|
||||||
|
jsr pageflip
|
||||||
|
jsr wait
|
||||||
|
jsr pageflip
|
||||||
|
jsr wait
|
||||||
|
dec scratch_count
|
||||||
|
bne debugloop
|
||||||
|
rts
|
||||||
|
|
||||||
|
.include "_apple2-working-sprite-driver.s"
|
Loading…
Reference in New Issue
Block a user