From d47b771f162c52b79847162c248724c40053b9f4 Mon Sep 17 00:00:00 2001 From: Kevin Cathcart Date: Tue, 27 Aug 2019 23:47:21 -0400 Subject: [PATCH] Turn in Triforce pieces support --- elder.asm | 63 ++++++++++++++++++++++++++++++++++++++ hooks.asm | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++ newitems.asm | 11 +++++-- sheet178.gfx | Bin 0 -> 1296 bytes tables.asm | 6 +++- 5 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 elder.asm create mode 100644 sheet178.gfx diff --git a/elder.asm b/elder.asm new file mode 100644 index 0000000..e36d8fc --- /dev/null +++ b/elder.asm @@ -0,0 +1,63 @@ +NewElderCode: +{ +LDA $8A : CMP #$1B : BEQ .newCodeContinue +;Restore Jump we can keep the RTL so JML +JML $05F0CD +.newCodeContinue +PHB : PHK : PLB +LDA.b #$07 : STA $0F50, X ;Palette +JSR Elder_Draw +JSL Sprite_PlayerCantPassThrough +JSR Elder_Code + +PLB +RTL + + + Elder_Draw: + { + + LDA.b #$02 : STA $06 : STZ $07 ;Number of Tiles + + LDA $0DC0, X : ASL #04 + + ADC.b #.animation_states : STA $08 + LDA.b #.animation_states>>8 : ADC.b #$00 : STA $09 + + JSL Sprite_DrawMultiple_player_deferred + JSL Sprite_DrawShadowLong + + RTS + + .animation_states + ;Frame0 + dw 0, -9 : db $C6, $00, $00, $02 + dw 0, 0 : db $C8, $00, $00, $02 + ;Frame1 + dw 0, -8 : db $C6, $00, $00, $02 + dw 0, 0 : db $CA, $40, $00, $02 + } + + Elder_Code: + { + LDA GoalItemRequirement : BEQ .despawn + LDA TurnInGoalItems : BNE + + .despawn + STZ $0DD0, X ; despawn self + RTS + + + + LDA.b #$96 + LDY.b #$01 + + JSL Sprite_ShowSolicitedMessageIfPlayerFacing : BCC .dont_show + LDA !GOAL_COUNTER + CMP GoalItemRequirement : !BLT + + JSL.l ActivateGoal + + + .dont_show + + .done + LDA $1A : LSR #5 : AND.b #$01 : STA $0DC0, X + RTS + } \ No newline at end of file diff --git a/hooks.asm b/hooks.asm index 0d81f63..4ac0437 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2349,3 +2349,88 @@ Dungeon_OpenKeyedObject_bigChest: org $01EC38 ; <- 0EC38 - bank01.asm : 13809 (.smallChest) Dungeon_OpenKeyedObject_smallChest: ;================================================================================ + +;================================================================================ +; Murahdahla (The brother who re-assembles the triforce pieces) +;-------------------------------------------------------------------------------- +org $06C092 ; bank06.asm:1864 (JSL Sprite_ElderLong) [22 CD F0 05] +JSL NewElderCode +;-------------------------------------------------------------------------------- +; Add him to Castle Map post-rain, and post aga1 +;-------------------------------------------------------------------------------- +org $09D0AC +db #$18, #$0F, #$43, #$FF;remove heart from tree adjancent map [LW1] +db #$12, #$19, #$16 ;add sahasrala in castle Y, X, Sprite ID +org $09C937 +db #$B0, #$D0 ;change [LW1] map 01C pointers +org $09D421 +db #$18, #$0F, #$45, #$FF;remove heart from tree adjancent map [LW2] +db #$12, #$19, #$16 ;add sahasrala in castle Y, X, Sprite ID +org $09CA57 +db #$25, #$D4 ;change [LW2] map 01C pointers +;-------------------------------------------------------------------------------- +; Expanded trinexx sheet gfx. +;-------------------------------------------------------------------------------- +org $00CFC0+178 : db #$33 +org $00D09F+178 : db #$90 +org $00D17E+178 : db #$00 +; Use above sheet in Hyrule castle courtyard after rain state. +org $00DB9E ; Hyrule Castle GFX Sprite Sheet 4 on [LW1] +db #$3F +org $00DC0A ; Hyrule Castle GFX Sprite Sheet 4 on [LW2] +db #$3F +;-------------------------------------------------------------------------------- +; Updated evil barrier animation table +;-------------------------------------------------------------------------------- +org $1DF0E1;Evil Barrier new draw code + +dw 0, 0 : db $CC, $00, $00, $02 +dw -29, 3 : db $EA, $00, $00, $00 +dw -29, 11 : db $FA, $00, $00, $00 +dw 37, 3 : db $EA, $40, $00, $00 +dw 37, 11 : db $FA, $40, $00, $00 +dw -24, -2 : db $CE, $00, $00, $02 +dw -8, -2 : db $CE, $00, $00, $02 +dw 8, -2 : db $CE, $40, $00, $02 +dw 24, -2 : db $CE, $40, $00, $02 + +dw 0, 0 : db $EC, $00, $00, $02 +dw -29, 3 : db $EB, $00, $00, $00 +dw -29, 11 : db $FB, $00, $00, $00 +dw 37, 3 : db $EB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +dw 0, 0 : db $EC, $00, $00, $02 +dw 0, 0 : db $EC, $00, $00, $02 +dw 0, 0 : db $EC, $00, $00, $02 +dw 0, 0 : db $EC, $00, $00, $02 + +dw 0, 0 : db $EC, $00, $00, $02 +dw -29, 3 : db $EB, $00, $00, $00 +dw -29, 11 : db $FB, $00, $00, $00 +dw 37, 3 : db $EB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +dw -24, -2 : db $CE, $80, $00, $02 +dw -8, -2 : db $CE, $80, $00, $02 +dw 8, -2 : db $CE, $C0, $00, $02 +dw 24, -2 : db $CE, $C0, $00, $02 + +dw 0, 0 : db $CC, $00, $00, $02 +dw -29, 3 : db $EA, $00, $00, $00 +dw -29, 11 : db $FA, $00, $00, $00 +dw 37, 3 : db $EA, $40, $00, $00 +dw 37, 11 : db $FA, $40, $00, $00 +dw 0, 0 : db $CC, $00, $00, $02 +dw 0, 0 : db $CC, $00, $00, $02 +dw 0, 0 : db $CC, $00, $00, $02 +dw 0, 0 : db $CC, $00, $00, $02 + +dw -29, 3 : db $EB, $00, $00, $00 +dw -29, 11 : db $FB, $00, $00, $00 +dw 37, 3 : db $EB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +dw 37, 11 : db $FB, $40, $00, $00 +;================================================================================ \ No newline at end of file diff --git a/newitems.asm b/newitems.asm index 03ece80..ddf2f62 100755 --- a/newitems.asm +++ b/newitems.asm @@ -31,6 +31,7 @@ ; #$65 - Progressive Bow ; #$6A - Goal Item (Single/Triforce) ; #$6B - Goal Item (Multi/Power Star) +; #$6C - Goal Item (Multi/Triforce Piece) ; #$6D- Server Request ; #$6E - Server Request (Dungeon Drop) ; #$70 - Maps @@ -162,7 +163,10 @@ ProcessEventItems: LDA GoalItemRequirement : BEQ ++ LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER - CMP GoalItemRequirement : !BLT ++ : JSL.l ActivateGoal : ++ + CMP GoalItemRequirement : !BLT ++ + LDA TurnInGoalItems : BNE ++ + JSL.l ActivateGoal + ++ LDX.b #$01 : BRA .done + @@ -309,7 +313,10 @@ AddReceivedItemExpandedGetItem: .multi_collect LDA GoalItemRequirement : BEQ ++ LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER - CMP GoalItemRequirement : !BLT ++ : JSL.l ActivateGoal : ++ + CMP GoalItemRequirement : !BLT ++ : + LDA TurnInGoalItems : BNE ++ + JSL.l ActivateGoal + ++ BRL .done + CMP.b #$6D : BNE + ; Server Request JSL ItemGetServiceRequest diff --git a/sheet178.gfx b/sheet178.gfx new file mode 100644 index 0000000000000000000000000000000000000000..353718b984ee7138a84d1ffbb56eaabc13394d09 GIT binary patch literal 1296 zcmWlZeM}Q~7{|YNzv~O5&?_|3!G$(0tl$e&+>|lAW8REx1H-1-SSHdALIVaIWYHzpX_s{dq^L<{D z&+{u#F;+LxJbmPk?>Z+RR`y(1kDtE&>)W#@NLzTCx9xVWetZwy~e%J_u z#UisoeaW#g7lg4b+S#!UNJ35e@EgWa$kv3A^r=tscP;~AB*LliOsLb74)5t^Y?YV1bMyamCwZ{Hk?lLKyUB437$7q7G(g#dfH~Q z0k#ZmTXqT5syg`Ka5Oa?JlFu#`5a9L8x|j{n2)@;wqxyl?aQbB>Ph|V_;Gj6=+aFi zYPB}3=_&E%jP0gYtA(mP)qYNGueFj~8<+bOS6aNTcFi*_L93%^S-H4ogCSp9cH*sL zjdMlkt4)2RxUZ{AaALG+dqRq5>Z2F`PK+pxw92=>bLUQa1Sg-n zL`RoKsh+BmA}_HaW4sXU61=wG{YUFI9*!n5Tx59cD;1LQ{>F)$x?1zdJxYH<7l;(e z2Sq_YwQm72Av+#zdMIC!QzGO5a`+urQnC!>PX$>7{h%4pCTUY_5DX0*aa9edyDYp_ZVnex4fKfm9+_*GBK-j;Yr!|0hUuU(z~XYQVm7NLU`^^jEyYic-|4(N1h zBwPw*FDyB>BBwW3Sw^y$tbDH%wKjc;cy~N!=47gC@4wF4`48?-|FTD_&Kq$ z%JD4k=XkRU$9Hr{ex7is;KX%28e?-Li|4qC*49Qp?~m1h22HJY6RN@$6G0POL9E}@ zWUOwIF%ugiM3$4Oc!=1D!sw4<#zY= zS}dzp)~{F}5dD-$!2$>?0+b@a66-D*Ti-ACqZE`r)|a$o2|jO)(`~cE7XOx^T-mW3 W7W=G2cc>nfg}Jtgl%qdU0^>hnufXR3 literal 0 HcmV?d00001 diff --git a/tables.asm b/tables.asm index 95130ab..9a8f8f1 100644 --- a/tables.asm +++ b/tables.asm @@ -911,8 +911,12 @@ db #$00 ; #$00 = Locked (Default) - #$01 = Restart org $308193 ; PC 0x180193 ServerRequestMode: db #$00 ; #$00 = Off (Default) - #$01 = Synchronous - #$02 = Asychronous +;--------------------------------------------------------------------------------- +org $308194 ; PC 0x180194 +TurnInGoalItems: +db #$01 ; #$00 = Instant win if last goal item collected. $01 must turn in goal items ;-------------------------------------------------------------------------------- -; 0x180194 - 0x1801FF (unused) +; 0x180195 - 0x1801FF (unused) ;================================================================================ org $308200 ; PC 0x180200 - 0x18020F RedClockAmount: