wip level complete

This commit is contained in:
alpine9000
2016-05-08 09:58:52 +10:00
parent f908aceddb
commit 639de63c47
6 changed files with 107 additions and 46 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

+5 -1
View File
@@ -34,6 +34,9 @@ FOREGROUND_PLAYAREA_RIGHT_MARGIN_BYTES equ 12
FOREGROUND_PLAYAREA_HEIGHT_WORDS equ 8
FOREGROUND_MOVING_COUNTER equ 50
FOREGROUND_TILE_ENDLEVEL equ $7098
FOREGROUND_TILE_EMPTY equ $709a
BACKGROUND_SCROLL_SHIFT_CONVERT equ 4
BACKGROUND_SCROLL_TILE_INDEX_CONVERT equ 3
BACKGROUND_SCROLL_PIXELS equ 16
@@ -85,4 +88,5 @@ RASTER_X_START equ $81 ; hard coded coordinates from hardware manual
RASTER_Y_START equ $2c
RASTER_X_STOP equ RASTER_X_START+SCREEN_WIDTH
RASTER_Y_STOP equ RASTER_Y_START+256
IMAGESIZE equ BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*SCREEN_HEIGHT
SCROLL_EXTRA equ 0
IMAGESIZE equ BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*(SCREEN_HEIGHT+SCROLL_EXTRA)
+24 -24
View File
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="100" height="8" tilewidth="16" tileheight="16" nextobjectid="1">
<tileset firstgid="1" name="foreground" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="assets/assets.png" width="320" height="256"/>
</tileset>
<tileset firstgid="321" name="items" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="assets/items.png" trans="000000" width="320" height="256"/>
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGTEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvOMiBwkwLhzzTIJTbTaa+ejrro8QPlMTnaDqnvhyhOFtOID4HSx4gV45c/9HKnYMxjQx1OUrKjcFWR9A7nQ82OWkG3G0wWsgNxjbmYJIDAJ+ZWmA=
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztlD0OwjAMheOhU0+QqSdg4v4HYOoJmDgBEyu10FPdh5M0bRFI5JOiSGli+/mnITT+hbOEcJLl3tjHOK37wTZ7mW1rnR4Vb9fEcglzD3wS6+doDYDz38krf9b33j7vxN9tDPDDsXMtvVh6OmP7FujycnTNfGM/OR/eO/WLGo7OHWiL07qFZW+hJoze2zI7sMU7iPJ+18Zid2Bnjb9Z/TYPXky5eOHDi5NzlkPrPEhaS4le0m+21KQ0Hxb0qPWnuodEnaCVbeiZ3XmucObN3Na8Kbk5Tmkp4Wn07K79Z3McNb31DWrzZvMRf1hXo8wTZUo3PA==
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztlV0OgjAQhNmjIaJVAZuo97+KNrGxQPeXSnjgeyEps7Pb2QSqamdLHEBfUwtrPOh6RN3VMBPnuRYl+oV8qYwbGGst/qnHhfG4LbxTUyATq4ek7sFoYsa5rJ8w10bdEfHtkHNMP4Xa13QeDdhcViT3sWbhPu/bb9Yu0XpiH57YI0Yr0KY9Jfqe0bxW/mZpCPfr4fcMcHk6wU40nJgai2eJ/kPmnJuVIudn9dT+J7QZngn9v/exlPvG59spxxv5VRN9
</data>
</layer>
</map>
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="100" height="8" tilewidth="16" tileheight="16" nextobjectid="1">
<tileset firstgid="1" name="foreground" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="assets/assets.png" width="320" height="256"/>
</tileset>
<tileset firstgid="321" name="items" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="assets/items.png" trans="000000" width="320" height="256"/>
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvqMtZQuNFC4c8iB5scrvJ1FdPZ33k+AEWH5TE9Wg6p03+wJfulpOZDuidB8iVI9d/1HYnNfLHqBz1yo2hWH/QIp0PFjlYfEgz4G6D0UJuMLYxB5McAAccW5U=
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztlD0OwjAMheOhU0+QqSdg4v4HYOoJmDgBEyu10FPdh5M0bRFI5JOiSGli+/mnITT+hbOEcJLl3tjHOK37wTZ7mW1rnR4Vb9fEcglzD3wS6+doDYDz38krf9b33j7vxN9tDPDDsXMtvVh6OmP7FujycnTNfGM/OR/eO/WLGo7OHWiL07qFZW+hJoze2zI7sMU7iPJ+18Zid2Bnjb9Z/TYPXky5eOHDi5NzlkPrPEhaS4le0m+21KQ0Hxb0qPWnuodEnaCVbeiZ3XmucObN3Na8Kbk5Tmkp4Wn07K79Z3McNb31DWrzZvMRf1hXo8wTZUo3PA==
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztlcsOgjAQRZlPU0TxgRK0+v9/ok1sLLXzLCEsOBuS9s7tzJ0FVbWyJLagr9kIawbQvRF0J0NPnOdcTPGez5fKuIax1uIfe9wZj3PhTPUEmVg9JHXc/CHjXNYP+NcG3Q7xvSDnmD7lSOjSfjTk+irxk9Ras3Cf++abdRtpe2IfjtgjRiPQukgj0XeC2Uoorafw83Xw+3q4PFtiJ+m+JOyZGovnU1GDvX/NnHO9UuT8rJ7a/4Q2wwOht+xjTm5Mf6+F978i5w1JIRUK
</data>
</layer>
</map>
+60 -18
View File
@@ -1,5 +1,6 @@
include "includes.i"
xdef LevelComplete
xdef BigBang
xdef IncrementCounter
xdef RenderCounter
@@ -29,7 +30,7 @@
xdef startForegroundMapPtr
xdef startPathwayMapPtr
xdef mapSize
xdef itemsMapOffset
xdef moving
xdef foregroundScrollPixels
@@ -113,6 +114,7 @@ Reset:
bra GameOver
.notGameOver:
lea message,a1
move.w #128,d0
jsr Message
@@ -171,6 +173,8 @@ FadeInLoop:
move.l #0,verticalBlankCount
move.l #1,frameCount
move.l #FOREGROUND_SCROLL_PIXELS,foregroundScrollPixels
bra GameLoop
.c1:
bra FadeInLoop
@@ -195,7 +199,6 @@ GameLoop:
add.l #1,frameCount
move.l frameCount,d6
move.l #FOREGROUND_SCROLL_PIXELS,foregroundScrollPixels
jsr WaitVerticalBlank
@@ -298,6 +301,7 @@ Update:
GameOver:
lea gameOverMessage,a1
move.w #128,d0
jsr Message
move.l #100,d0
@@ -311,8 +315,33 @@ GameOver:
bne .gotJoystick
bra .waitForJoystick
.gotJoystick:
move.l #foregroundMap,startForegroundMapPtr
move.l #pathwayMap,startPathwayMapPtr
move.l #level1ForegroundMap,startForegroundMapPtr
move.l #level1PathwayMap,startPathwayMapPtr
move.l #'0004',livesCounterText
jsr InitialiseItems
bra Reset
LevelComplete:
jsr ResetItems
jsr ResetPlayer
lea levelCompleteMessage,a1
move.w #100,d0
jsr Message
move.l #100,d0
.pause:
jsr WaitVerticalBlank
dbra d0,.pause
.waitForJoystick:
jsr ReadJoystick
btst.b #0,joystick
bne .gotJoystick
bra .waitForJoystick
.gotJoystick:
move.l #level1ForegroundMap,startForegroundMapPtr
move.l #level1PathwayMap,startPathwayMapPtr
move.l #'0004',livesCounterText
jsr InitialiseItems
bra Reset
@@ -630,10 +659,13 @@ RenderForegroundTile:
add.l d0,a0
lea foregroundTilemap,a1
move.w (a2),d0
cmp.l #0,d0
beq .s2
;; cmp.l #0,d0
;; beq .s2
add.w (a2),a1 ; source tile
add.l #(BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*(256-(16*8)+32)/4)+BITPLANE_WIDTH_BYTES-FOREGROUND_PLAYAREA_RIGHT_MARGIN_BYTES,a0
cmp.w #$ffff,d0
beq stopScrolling
lea animIndex,a4
move.l d2,d1
lsl.l #2,d1
@@ -650,6 +682,9 @@ RenderForegroundTile:
sub.l #2,(a4)
.s2:
rts
stopScrolling:
move.l #0,foregroundScrollPixels
rts
PostMissedTile:
@@ -662,7 +697,6 @@ BigBang:
PlaySound Falling
jsr WaitVerticalBlank
jsr PlayNextSound
jsr ResetItems
move.w #0,moving
move.l #0,frameCount
@@ -761,6 +795,8 @@ ClearForegroundTile:
lsr.l #2,d1 ; anim scaling (speed)
cmp.l #10,d1
bge .s1
cmp.l #0,foregroundScrollPixels
beq .s1
add.l d1,a1
add.l #2,(a4)
bra .s2
@@ -805,13 +841,14 @@ Message:
;; d0 - xpos
;; d1 - ypos
move.w d0,d1
move.w #(32*4)<<6|(320/16),d0
lea mpanelOrig,a0
lea mpanel,a2
jsr SimpleBlit
lea mpanel,a0
move.w #128,d0
move.w d1,d0
move.w #11,d1
jsr DrawMaskedText8
bsr ShowMessagePanel
@@ -891,7 +928,12 @@ message:
gameOverMessage:
dc.b "GAME OVER"
dc.b 0
align 4
align 4
levelCompleteMessage:
dc.b "LEVEL COMPLETE!"
dc.b 0
align 4
skippedFramesCounterText:
dc.b "0000"
@@ -1330,25 +1372,25 @@ mpanel:
incbin "out/mpanel.bin"
mpanelOrig:
incbin "out/mpanel.bin"
pathwayMap:
include "out/pathway-map.s"
dc.w $FFFF
foregroundMap:
level1ForegroundMap:
include "out/foreground-map.s"
dc.w $FFFF
level1PathwayMap:
include "out/pathway-map.s"
dc.w $FFFF
itemsMap:
include "out/items-indexes.s"
dc.w $FFFF
mapSize:
dc.l itemsMap-foregroundMap
itemsMapOffset:
dc.l itemsMap-level1ForegroundMap
foregroundMapPtr:
dc.l 0
pathwayMapPtr:
dc.l 0
startForegroundMapPtr:
dc.l foregroundMap
dc.l level1ForegroundMap
startPathwayMapPtr:
dc.l pathwayMap
dc.l level1PathwayMap
+1 -1
View File
@@ -208,7 +208,7 @@ RenderItemSprite:
cmp.b #$f,d1 ; only add sprite after tile has scrolled in
bne dontAddSprite
move.l a2,a3
add.l mapSize,a3
add.l itemsMapOffset,a3
cmpi.w #0,(a3)
beq dontAddSprite
+17 -2
View File
@@ -1,5 +1,6 @@
include "includes.i"
xdef ResetPlayer
xdef GetNextAutoMove
xdef CheckPlayerMiss
xdef UpdatePlayer
@@ -35,6 +36,11 @@ InitialisePlayer:
move.w #PLAYER_INITIAL_Y+16,spriteYEnd
rts
ResetPlayer:
move.w #0,spriteX
move.w #0,spriteY
move.w #0,spriteYEnd
rts
HidePlayer:
move.w #$7000,spriteX
@@ -42,8 +48,11 @@ HidePlayer:
ScrollSprites:
cmp.l #0,foregroundScrollPixels
beq .skip
sub.w #1,spriteX
bra ScrollItemSprites
.skip:
rts
@@ -330,9 +339,12 @@ CheckPlayerMiss:
;; a3 now points at the tile under the sprite
move.w (a3),d0
cmp.w #FOREGROUND_TILE_EMPTY,d0 ; empty tile
bge .doBigBang
cmp.w #$7098,d0 ; empty tile
beq .doBigBang
cmp.w #FOREGROUND_TILE_ENDLEVEL,d0
beq .levelComplete
cmp.w #$78e,d0
bge .noBigBang
@@ -340,6 +352,9 @@ CheckPlayerMiss:
.doBigBang:
jmp BigBang
.levelComplete:
jmp LevelComplete
.noBigBang:
move.w (a3),d0
cmp.w #$1e00,d0