mirror of
https://frontier.innolan.net/github/AmigaExamples.git
synced 2026-09-12 03:12:24 +00:00
wip level complete
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
+5
-1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user