Skip to content

Commit a448ed7

Browse files
committed
added Forest1 and Forest2
1 parent 0c1103f commit a448ed7

File tree

15 files changed

+642
-151
lines changed

15 files changed

+642
-151
lines changed

Data/LevelPointers.asm

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,62 @@ MapID_\1 = NUM_LEVELS
1313
NUM_LEVELS = NUM_LEVELS + 1
1414
endm
1515

16+
LevelParallaxFlags:
17+
; test map
18+
db 1
19+
; plains
20+
db 1
21+
db 1
22+
db 1
23+
db 1
24+
db 1
25+
db 1
26+
; db 0
27+
; forest
28+
db 0
29+
db 0
30+
db 0
31+
db 0
32+
db 0
33+
db 0
34+
db 0
35+
36+
; city
37+
db 1
38+
db 1
39+
db 1
40+
db 1
41+
db 1
42+
db 1
43+
db 0
44+
45+
; pyramid
46+
db 1
47+
db 1
48+
db 1
49+
db 1
50+
db 1
51+
db 1
52+
db 0
53+
54+
; cave
55+
db 1
56+
db 1
57+
db 1
58+
db 1
59+
db 1
60+
db 1
61+
db 0
62+
63+
; temple
64+
db 1
65+
db 1
66+
db 1
67+
db 1
68+
db 1
69+
db 1
70+
db 0
71+
1672
LevelPointers:
1773
addlevel TestMap
1874
@@ -24,8 +80,8 @@ LevelPointers:
2480
addlevel Plains6
2581
; addlevel PlainsBoss
2682
27-
; addlevel Forest1
28-
; addlevel Forest2
83+
addlevel Forest1
84+
addlevel Forest2
2985
; addlevel Forest3
3086
; addlevel Forest4
3187
; addlevel Forest5

Data/Tilesets.asm

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,11 @@ ForestTiles:
231231
section "Forest tileset - Collision map + metatiles",romx
232232

233233
ColMap_Forest:
234+
db 0,1,1,1,1,1,0,1,1,1,1,0,1,1,0,1
235+
db 0,1,1,1,1,1,0,1,1,0,0,0,0,0,0,1
236+
db 0,1,1,1,1,0,0,0,0,1,4,6,6,6,6,1
237+
db 1,2,2,2,2,0,0,0,0,2,2,2,2,1,0,0
238+
db 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
234239
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
235240
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
236241
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -240,13 +245,8 @@ ColMap_Forest:
240245
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
241246
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
242247
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
243-
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
244-
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
245-
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
246-
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
247-
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
248-
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
249-
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
248+
db 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0
249+
db 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0
250250

251251
Tileset_Forest:
252252
dw ColMap_Forest

Defines.asm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ sys_SecondsUntilSleep: db
233233

234234
sys_EmuCheck: db
235235

236+
sys_EnableParallax: db
236237
sys_EnableHDMA: db
237238
sys_TilemapBuffer: ds 20*18
238239
sys_StringBuffer: ds 32

Engine/GameModes/Level.asm

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ section "Level routines",rom0
3131

3232
; INPUT: A = Map ID
3333
GM_Level:
34+
push af
35+
ld hl,LevelParallaxFlags
36+
add l
37+
ld l,a
38+
jr nc,:+
39+
inc h
40+
: ld a,[hl]
41+
ld [sys_EnableParallax],a
42+
pop af
43+
3444
call GetLevel
3545
push hl
3646
; initialize variables
@@ -179,7 +189,9 @@ LevelLoop::
179189
ld [Engine_CameraIsTracking],a
180190
181191
.doparallax
182-
192+
ld a,[sys_EnableParallax]
193+
and a
194+
jp z,.noparallax
183195

184196
and a ; clear carry
185197
push de
@@ -214,6 +226,7 @@ LevelLoop::
214226
farcall Parallax_ShiftVertical
215227
.skipY
216228

229+
.noparallax
217230
.nocamera
218231
219232
call SpawnMonsters

Engine/GameModes/LevelSelect.asm

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
section "Level select RAM",wram0
22

3-
NUM_LEVEL_SELECT_ENTRIES = 7
3+
NUM_LEVEL_SELECT_ENTRIES = 9
44

55
section "Level select routines",rom0
66
GM_LevelSelect:
@@ -162,8 +162,8 @@ LevelSelect_DrawNames:
162162
section "Level names",romx
163163
LevelSelect_LevelNames:
164164
dw .0
165-
dw .1, .2, .3, .4, .5, .6;, .7
166-
; dw .8, .9,.10,.11,.12,.13,.14
165+
dw .1, .2, .3, .4, .5, .6,; .7
166+
dw .8, .9,;.10,.11,.12,.13,.14
167167
; dw .15,.16,.17,.18,.19,.20,.21
168168
; dw .22,.23,.24,.25,.26,.27,.28
169169
; dw .29,.30,.31,.32,.33,.34,.35
@@ -177,8 +177,8 @@ LevelSelect_LevelNames:
177177
.5 db "PLAIN PLAINS 5",0
178178
.6 db "PLAIN PLAINS 6",0
179179
;.7 db "BOSS 1",0
180-
;.8 db "FORLORN FOREST 1",0
181-
;.9 db "FORLORN FOREST 2",0
180+
.8 db "FORLORN FOREST 1",0
181+
.9 db "FORLORN FOREST 2",0
182182
;.10 db "FORLORN FOREST 3",0
183183
;.11 db "FORLORN FOREST 4",0
184184
;.12 db "FORLORN FOREST 5",0

Engine/Object.asm

Lines changed: 135 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ COLLECTABLE_1UP equ 3
3636
MONSTER_FISH_LR equ 4
3737
MONSTER_FISH_UD equ 5
3838
MONSTER_FISH_CIRC equ 6
39+
MONSTER_LOG equ 7
40+
MONSTER_LOG_BOUNCING equ 8
41+
MONSTER_LOG_SPAWNER equ 9
3942

4043
Monster_ID: ds MONSTER_COUNT
4144
Monster_WRAMPointer: ds MONSTER_COUNT
@@ -133,6 +136,10 @@ ObjectInit:
133136
minit -$000, $080,1<<MONSTER_FLAG_CWORLD | 1<<MONSTER_FLAG_CPLAYER, BANK(Anim_Fish_Swim),Anim_Fish_Swim,1 ; MONSTER_FISH_UD
134137
minit -$000, $000,1<<MONSTER_FLAG_CPLAYER, BANK(Anim_Fish_Swim),Anim_Fish_Swim,1 ; MONSTER_FISH_CIRC
135138
139+
minit -$080, $000,1<<MONSTER_FLAG_CPLAYER | 1<<MONSTER_FLAG_CWORLD | 1<<MONSTER_FLAG_GRAVITY,BANK(Anim_Default),Anim_Default,3 ; MONSTER_LOG
140+
minit -$080, $000,1<<MONSTER_FLAG_CPLAYER | 1<<MONSTER_FLAG_CWORLD | 1<<MONSTER_FLAG_GRAVITY,BANK(Anim_Default),Anim_Default,3 ; MONSTER_LOG_BOUNCING
141+
minit -$000, $000,1<<MONSTER_FLAG_CPLAYER | 1<<MONSTER_FLAG_CWORLD | 1<<MONSTER_FLAG_GRAVITY,BANK(Anim_Default),Anim_Default,3 ; MONSTER_LOG_SPAWNER
142+
136143
; Monster graphics pointer table
137144
; Format: Bank, Pointer
138145
section "Object Tile Pointers",romx
@@ -144,6 +151,10 @@ ObjectGraphics:
144151
mgraphic bank(FishTiles),FishTiles ; MONSTER_FISH_UD
145152
mgraphic bank(FishTiles),FishTiles ; MONSTER_FISH_CIRC
146153
154+
mgraphic bank(PlayerTiles),PlayerTiles ; MONSTER_LOG
155+
mgraphic bank(PlayerTiles),PlayerTiles ; MONSTER_LOG_BOUNCING
156+
mgraphic bank(PlayerTiles),PlayerTiles ; MONSTER_LOG_SPAWNER
157+
147158
; Object animations
148159
section "Object Animation Data",romx
149160
Anim_Default:
@@ -181,12 +192,16 @@ Anim_Fish_Swim:
181192
section "Object Behvaiors",romx
182193
BehaviorTable:
183194
dw Monster_NoBehavior ; MONSTER_NULL
184-
dw Monster_MoveLeftRight ; MONSTER_TEST
185-
dw Monster_MoveLeftRight ; MONSTER_TEST2
195+
dw Monster_Goony ; MONSTER_TEST
196+
dw Monster_Goony ; MONSTER_TEST2
186197
dw Collectable_ExtraLife ; COLLECTABLE_1UP
187198
dw Monster_Fish_LR ; MONSTER_FISH_LR
188199
dw Monster_Fish_UD ; MONSTER_FISH_UD
189200
dw Monster_Fish_Circ ; MONSTER_FISH_CIRC
201+
202+
dw Monster_MoveLeftRight ; MONSTER_LOG
203+
dw Monster_BounceLeftRight ; MONSTER_LOG_BOUNCING
204+
dw Monster_NoBehavior ; MONSTER_LOG_SPAWNER (TODO)
190205

191206
BehaviorDispatch:
192207
bit 7,h
@@ -224,7 +239,7 @@ Monster_TestBehavior:
224239
:
225240
ret
226241
227-
Monster_MoveLeftRight:
242+
Monster_Goony:
228243
ld hl,Monster_Collision
229244
add hl,bc
230245
ld a,[hl]
@@ -278,6 +293,119 @@ Monster_MoveLeftRight:
278293
xor 1<<MONSTER_FLAG_FLIPH
279294
ld [hl],a
280295
ret
296+
297+
Monster_MoveLeftRight:
298+
ld hl,Monster_Collision
299+
add hl,bc
300+
ld a,[hl]
301+
ld e,a
302+
and MONSTER_COLLISION_HORIZ
303+
jr z,:+
304+
ld hl,Monster_XVelocityS
305+
add hl,bc
306+
ld a,[hl]
307+
cpl
308+
add 1
309+
push af
310+
ld [hl],a
311+
ld hl,Monster_XVelocity
312+
add hl,bc
313+
pop af
314+
ld a,[hl]
315+
cpl
316+
adc 0
317+
ld [hl],a
318+
ld hl,Monster_Flags
319+
add hl,bc
320+
ld a,[hl]
321+
xor 1<<MONSTER_FLAG_FLIPH
322+
ld [hl],a
323+
:
324+
ld a,e
325+
and MONSTER_COLLISION_VERT
326+
jr z,:+
327+
xor a
328+
ld hl,Monster_YVelocity
329+
add hl,bc
330+
ld [hl],a
331+
ld hl,Monster_YVelocityS
332+
add hl,bc
333+
ld [hl],a
334+
:
335+
bit MONSTER_COLLISION_PLAYER,e
336+
ld de,0
337+
; ld de,Anim_GoonyKill
338+
jp nz,Monster_CheckKill
339+
; death animation flipping
340+
; ld hl,Monster_Flags
341+
; add hl,bc
342+
; bit MONSTER_FLAG_REMOVE_Y,[hl]
343+
; ret z
344+
; ld a,[sys_CurrentFrame]
345+
; and $7
346+
; and a
347+
; ret nz
348+
; ld a,[hl]
349+
; xor 1<<MONSTER_FLAG_FLIPH
350+
; ld [hl],a
351+
ret
352+
353+
Monster_BounceLeftRight:
354+
ld hl,Monster_Collision
355+
add hl,bc
356+
ld a,[hl]
357+
ld e,a
358+
and MONSTER_COLLISION_HORIZ
359+
jr z,:+
360+
ld hl,Monster_XVelocityS
361+
add hl,bc
362+
ld a,[hl]
363+
cpl
364+
add 1
365+
push af
366+
ld [hl],a
367+
ld hl,Monster_XVelocity
368+
add hl,bc
369+
pop af
370+
ld a,[hl]
371+
cpl
372+
adc 0
373+
ld [hl],a
374+
ld hl,Monster_Flags
375+
add hl,bc
376+
ld a,[hl]
377+
xor 1<<MONSTER_FLAG_FLIPH
378+
ld [hl],a
379+
:
380+
ld a,e
381+
and MONSTER_COLLISION_VERT
382+
jr z,:+
383+
ld hl,Monster_YVelocity
384+
add hl,bc
385+
ld a,high(-$0400)
386+
ld [hl],a
387+
xor a
388+
ld hl,Monster_YVelocityS
389+
add hl,bc
390+
ld [hl],a
391+
:
392+
bit MONSTER_COLLISION_PLAYER,e
393+
ld de,0
394+
; ld de,Anim_GoonyKill
395+
jp nz,Monster_CheckKill
396+
; death animation flipping
397+
; ld hl,Monster_Flags
398+
; add hl,bc
399+
; bit MONSTER_FLAG_REMOVE_Y,[hl]
400+
; ret z
401+
; ld a,[sys_CurrentFrame]
402+
; and $7
403+
; and a
404+
; ret nz
405+
; ld a,[hl]
406+
; xor 1<<MONSTER_FLAG_FLIPH
407+
; ld [hl],a
408+
ret
281409
282410
Monster_Fish_LR:
283411
ld hl,Monster_Collision
@@ -512,6 +640,9 @@ Monster_CheckKill:
512640
add hl,bc
513641
ld [hl],low(-$300)
514642
; set animation
643+
ld a,e
644+
or d
645+
jr z,:+ ; skip if anim pointer = 0
515646
ld hl,Monster_AnimPtrHi
516647
add hl,bc
517648
ld [hl],d
@@ -521,7 +652,7 @@ Monster_CheckKill:
521652
ld hl,Monster_AnimTimer
522653
add hl,bc
523654
ld [hl],1
524-
; make player bounce
655+
: ; make player bounce
525656
ld a,[sys_btnHold]
526657
bit btnA,a
527658
jr nz,.highbounce

0 commit comments

Comments
 (0)