If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Daffy Duck: The Marvin Missions (SNES)
Jump to navigation
Jump to search
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > To do
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Viacom New Media > Games developed by ICOM Simulations
Games > Games by platform > SNES games
Games > Games by publisher > Games published by Sunsoft
Games > Games by release date > Games released in 1993
Games > Games by release date > Games released in October
Games > Games by series > Looney Tunes series
Daffy Duck: The Marvin Missions |
---|
Developer: ICOM Simulations This game has uncompiled source code. |
To do: Prototype. |
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
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > To do
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Viacom New Media > Games developed by ICOM Simulations
Games > Games by platform > SNES games
Games > Games by publisher > Games published by Sunsoft
Games > Games by release date > Games released in 1993
Games > Games by release date > Games released in October
Games > Games by series > Looney Tunes series