|
Subject: Re: [stella] Bounce! demo From: Dennis Debro <ddebro@xxxxxxxxxxxxx> Date: Mon, 28 Jul 2003 12:47:51 -0400 |
Hi Fab,
> So, as usual, I'd really love comments on all aspects of the game..
> playability, optimizations, improvements, etc.! :)
I took this opportunity to practice my "Kung Fu". Here are a few areas that would save a couple of bytes...
- You can remove the SEI instruction. It's not needed (saves 1 byte)
- Using Andrew Davie's clear routine will save you 2 bytes
- You can remove the JMP routines in your MainLoop and just place those routines in the main loop. It may not flow the best as far as readability but will save you ~15 bytes.
- In WaitINTIM if you do...
.waitTimer
ldx INTIM
bne .waitTimer
rts
then x will be 0 when you do VerticalBlank so there would be no need to load it and that would save you 2 bytes
If you do this this you would also have to change...
DrawScreen subroutine
; LDA INTIM
; BNE DrawScreen ; Whew!
JSR WaitINTIM
STX WSYNC
STX VBLANK
- I'd change the VerticalBlank routine to...
; ldx #0 not needed if you do the above suggestion
lda #2
sta WSYNC
sta VSYNC
sta WSYNC
sta WSYNC
IF PAL_60hz
ldy #52
ELSE
ldy #44
ENDIF
lsr ; a = 1
sta WSYNC
sta VSYNC
sty TIM64T ; this may need to be adjusted since it's not being set during VSYNC
sty CXCLR
; RTS
;CheckSwitches subroutine
; LDA #0
stx COLUBK ; since x was 0 from above (saves 2 bytes)
I also looked at .CheckBlocks and that seems busy. I'll come back to it later when I have more time. At the surface if you change it to...
.CheckBlocks
lda BallX
cmp #110
bcs .death
cmp #63
bcc .death
lda BallY
cmp #187
bcs .death
cmp #130
bcc .death
lda #0
sta BigJump
ldx BallPos
lda LevelRam,x
cmp #BLOCK_BLANK
beq .death
cmp #BLOCK_NORMAL
bne .ContBlock2
; Put here action
lda #BLOCK_BLANK
sta LevelRam,X
; SEC ; Carry must be set here!
sed
lda TilesLeft
sbc #1
sta TilesLeft
;DEC TilesLeft
cld
bne .EndBlockCheck
jsr InitRandomLevel
.death
jsr InitGame
jmp .EndMove
.ContBlock2
cmp #BLOCK_IRON
beq .EndBlockCheck
.ContBlock3
CMP #BLOCK_RIGHT
BNE .ContBlock4
; Put here action
LDA #%01111111 ; Force movement
STA OldJoystick0
LDA #BLOCK_BLANK
STA LevelRam,X
beq .EndBlockCheck
.ContBlock4
CMP #BLOCK_LEFT
BNE .ContBlock5
; Put here action
LDA #%10111111 ; Force movement
STA OldJoystick0
LDA #BLOCK_BLANK
STA LevelRam,X
beq .EndBlockCheck
.ContBlock5
CMP #BLOCK_DOWN
BNE .ContBlock6
; Put here action
LDA #%11011111 ; Force movement
STA OldJoystick0
LDA #BLOCK_BLANK
STA LevelRam,X
beq .EndBlockCheck
.ContBlock6
CMP #BLOCK_UP
BNE .ContBlock7
; Put here action
LDA #%11101111 ; Force movement
STA OldJoystick0
LDA #BLOCK_BLANK
STA LevelRam,X
beq .EndBlockCheck
.ContBlock7
CMP #BLOCK_JUMP
BNE .ContBlock8
; Put here action
;LDA #BLOCK_JUMP
LDA #1
STA BigJump
LDA #BLOCK_BLANK
STA LevelRam,X
beq .EndBlockCheck
.ContBlock8
you could save 42 bytes.
This is all I see so far. I'll keep looking as time permits.
Take care,
Dennis
----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [stella] Bounce! demo, Erik Eid | Thread | Re: Re: [stella] Bounce! demo, Dennis Debro |
| Re: [stella] Homestar RPG Demo, Paul Slocum | Date | Re: Re: [stella] Bounce! demo, Dennis Debro |
| Month |