Daffy Duck: The Marvin Missions takes many cues from the famous "Duck Dodgers" shorts, so much so that it's pretty baffling why they didn't just call the game Duck Dodgers.
|
|
To do: |
Uncompiled Source Code#
Large chunks of uncompiled source code are in the American sample ROM at 0x47400 and 0x4F400, while the European release just has a small chunk at 0x37F2A.
00 ; 16 bit accu.
LONGA ON
inc ep1
lda et1 ; Current Address
sta [ep1]
inc ep1 ; bump hma pointer
inc ep1
dec et2 ; keep going until complete
bne .15
inc et1 ; bump var used
inc et1
bra .10
.40 sep #%00100000 ; 8 bit accu.
LONGA OFF
lda #$81 ; 1 at a time
sta [ep1]
rep #%00100000 ; 16 bit accu.
LONGA ON
inc ep1
lda et1 ; Current Address
sta [ep1]
inc ep1
inc ep1
lda ep1
cmp #(HDMAMiscTable+$0ef0) ; Reached the end?
bcc .40
lda #$0000 ; End
sta [ep1]
inc ep1
inc ep1
sta [ep1]
lda #HDMAVarSpace
sta ep1
ldx #|HDMAVarSpace
stx ep1+2
stx $4377 ; Data Bank for HDMA
lda #$0000
ldy #$80
.80 sta [ep1],y ; Clear out var. space
dey
dey
bpl .80
.90 plb ; Restore DBR
plp
rtl
;----------------------------------------------------------------------------
Build_Level_HDMA:
php
sep #%00100000 ; 8 bit accumulator
LONGA OFF
phb ; Save current DBR
lda #|(.10)-1 ; Push current bank #
pha
rep #%00100000 ; 16 bit accumulator
LONGA ON
lda #(.10)-1 ; Return address on stack
pha
sep #%00100000 ; 8 bit accumulator
LONGA OFF
lda LevelInitBank
pha
pha
plb ; Set DBR same as init code
rep #%00100000 ; 16 bit accumulator
LONGA ON
lda LevelInitCode
clc
adc #12 ; Get to 5th spot (HDMA Update)
pha
rtl ; Special JMP
.10 plb ; Restore DBR
plp ; Restore processor status
rtl
;----------------------------------------------------------------------------
Check_For_Pause:
php
rep #%00100000 ; 16 bit accu.
LONGA ON
lda DDStartCtrl
beq .90
lda #1
sta GamePaused
lda CurrentLevel
and #%0000000000000011
cmp #%0000000000000011 ; End-Boss level?
beq .30 ; skip radar if End-Boss
; lda StatusBarUpdate
; ora #Update_PauseOn ; Update pause display
; sta StatusBarUpdate
jsl MakeRadar
jsl Wait_For_VBL
jsl Draw_Radar ; Draw radar to screen
jsl Init_PauseBlink ; Initialize blinking dot
.30 jsl Wait_For_VBL
jsl Update_Status_Bar ; Update energy & life bar
jsl Read_DD_Controls ; Get controls for DD
lda CurrentLevel
and #%0000000000000011
cmp #%0000000000000011 ; End-Boss level?
beq .35 ; skip radar if End-Boss
jsl Update_PauseBlink
.35 lda DDStartCtrl
beq .30
jsl Clear_Radar ; Clear Radar image
lda StatusBarUpdate
ora #Update_PauseOff ; Update pause display
sta StatusBarUpdate
.90 stz GamePaused
plp
rtl
;----------------------------------------------------------------------------
; Duck Dodgers object
; -------------------
; UserWrd --> Timer for Sleep Frame changes
; UsrWrd2 --> Sleep Frame for nutty
; UsrWrd3 --> Ptr. to Nutty Delta List
; UsrWrd4 --> Timer for Nutty Deltas
; UsrWrd5 --> Direction for Nutty Sleep Frame changes (0=faster 1=slower)
; UsrWrd6 --> Old Scroll obj. (for use with nutty)
; SftCtrl --> Copy of SATCtrl (used by Nutty and "Think" pose)
;----------------------------------------------------------------------------
Init_DuckDodgers:
php
rep #%00100000
2 lda #DDStndR ; stand / face right
jsl Poke_Anim
jmp .90
; Get correct friction for current platform
.15
; jsl Get_Bottom_Coordinates
; jsl Get_Character_Info
; lda ObjType
lda Obj3CharType
bit #Stamp_Ice
bne .16
lda #Duck_StandFriction
bra .17
.16 lda #Duck_IceStandFriction
.17 sta ot3
eor #$ffff
inc a
sta ot4
; Apply friction for standing (looking up)
lda X_Delta,x
beq .70 ; skip this if not moving
bmi .30 ; branch if moving left
cmp ot3
bcc .60 ; stop duck if moving too slow
sec
sbc ot3 ; Slow duck down
sta X_Delta,x
bra .70
.30 cmp ot4
bcs .60
clc
adc ot3
sta X_Delta,x
bra .70
.60 stz X_Delta,x ; Stop duck from moving
; check to see if duck wants to crouch in a new direction
.70 lda DDLeftCtrl
beq .80
lda SATCtrl,x
bit #Obj_XFlip ; Is duck facing left?
bne .90 ; branch if he is...
ora #Obj_XFlip ; Face duck to the left
sta SATCtrl,x
lda #DDLookL ; Make duck look up / left
jsl Poke_Anim
lda #2 ; keep in frame #2
sta Frame,x
lda #1
jsl Do_Anim ; update frame
bra .90
.80 lda DDRightCtrl
beq .90
lda SATCtrl,x
bit #Obj_XFlip ; Is duck facing right?
beq .90 ; branch if he is...
and #$ffff-Obj_XFlip ; Face duck to the right
sta SATCtrl,x
lda #DDLookR ; Make duck look up / right
jsl Poke_Anim
lda #2 ; keep in frame #3
sta Frame,x
lda #1
jsl Do_Anim ; update frame
.90 rts
;----------------------------------------------------------------------------
Duck_ShootUp:
jsl Adjust_For_45 ; Fix Y Coordinate if Duck is on 45
beq .1
jmp .90
.1 jsl Check_For_Sides
cmp #2 ; pain?
bne .2
lda #1 ; 1 damage
jsl Hurt_DuckDodgers
jmp .90
.2 lda DDShield
bne .3 ; Don't check pain if DD has shield
jsl Get_Middle_Coordinates ; Check middle
jsl Get_Character_Info
lda ObjType
bit #Stamp_Pain
beq .3
lda #1 ; 1 damage
jsl Hurt_DuckDodgers ; Hurt duck who crouches in pain!!
jmp .90
.3 jsr Check_Evil_Collision
beq .4
jmp .90 ; leave early if hurt/dead
.4 jsr Check_For_Fall
beq .10
jmp .90 ; leave if duck has fallen
; Get correct friction for current platform
.10
; jsl Get_Bottom_Coordinates
; jsl Get_Character_Info
; lda ObjType
lda Obj3CharType
bit #Stamp_Ice
bne .16
lda #Duck_StandFriction
bra .17
.16 lda #Duck_IceStandFriction
.17 sta ot3
eor #$ffff
inc a
sta ot4
; Apply friction for standing (shooting up)
lda X_Delta,x
beq .70 ; skip this if not moving
bmi .30 ; branch if moving left
cmp ot3
bcc .60 ; stop duck if moving too slow
sec
sbc ot3 ; Slow duck down
sta X_Delta,x
bra .70
.30 cmp ot4
bcs .60
clc
adc ot3
sta X_Delta,x
bra .70
.60 stz X_Delta,x ; Stop duck from moving
.70 lda SlpTime,x
cmp #1 ; End of frame?
bne .90 ; branch if not..
lda SATCtrl,x
bit #Obj_XFlip ; which way is duck facing?
beq .80 ; branch if facing right
lda #DDLookL ; Make duck look up / left
bra .85
.80 lda #DDLookR ; Make duck look up / right
.85 jsl Poke_A
kPGrowY:
dw $8000,$8000,$8000,$8000
;----------------------------------------------------------------------------
MrtGun0 dw $0001,$ffff,MG0PAT,$0000,$0000,$0000
dw $0000,$0000,$0000,$0000,$0000,$ffff
MG0PAT
References#
- SNES Games (archived)↩︎
- www.NINTENDO.se - Spel - Super NES (archived)↩︎
- Playtronic e Tec Toy trazem novos cartuchos "Playtronic and Tec Toy bring new cartridges" - O Estado de S. Paulo, February 21, 1994↩︎
|
The Looney Tunes series | |
|---|---|
|
Game Boy |
|
|
SNES |
|
|
Game Boy Color |
Looney Tunes • Looney Tunes Collector: Alert! (Prototypes) • Marvin Strikes Back! |
|
DOS |
|
|
Sega Saturn |
|
|
PlayStation |
|
|
PlayStation 2 |
|
|
Dreamcast |
|
|
Xbox |
|
|
GameCube |
|
|
Wii, Xbox 360 |
|
|
Windows |
|
|
Game Boy Advance |
|
|
Android/iOS |
|
|
Adobe Flash |
|
|
Bugs Bunny | |
|
Atari 2600 |
|
|
NES |
|
|
DOS |
|
|
Genesis |
|
|
SNES |
|
|
Game Boy (Color) |
Crazy Castle • Crazy Castle II • Crazy Castle 3 • Bugs Bunny Collection • Carrot Crazy |
|
PlayStation, Windows |
|
|
Adobe Flash |
|
|
Daffy Duck | |
|
DOS |
|
|
Sega Master System, Game Gear |
|
|
Genesis |
|
|
SNES |
|
|
Nintendo 64 |
|
|
Game Boy (Color) |
|
|
Nintendo DS |
|
|
Adobe Flash |
|
|
Marvin the Martian | |
|
Adobe Flash |
|
|
Porky Pig | |
|
SNES |
|
|
Road Runner & Wile E. Coyote | |
|
Arcade |
|
|
NES |
|
|
DOS |
|
|
Genesis |
|
|
SNES |
|
|
Game Gear, Sega Master System |
|
|
Speedy Gonzales | |
|
Genesis |
|
|
SNES |
|
|
Game Boy Color |
|
|
Sylvester & Tweety | |
|
Genesis |
|
|
Game Boy Color |
|
|
Adobe Shockwave |
|
|
Adobe Flash |
|
|
Taz | |
|
Atari 2600 |
|
|
Sega Master System |
|
|
Game Gear |
|
|
Genesis |
|
|
SNES |
|
|
Game Boy |
|
|
PlayStation, Windows |
|
|
Nintendo DS |
|
|
GameCube, Xbox, PlayStation 2, Windows |
|
|
Nintendo 64 |
|
|
Adobe Flash |
Extreme Taz: Skateboard Street Course • Extreme Taz: Skateboard Halfpipe • Taz' Football Frenzy |
|
See Also | |
|
Tiny Toon Adventures • Animaniacs • Cartoon Network • DC Comics |
|