diff --git a/Core/music_macros.asm b/Core/music_macros.asm index 0d1ac79..ed44b61 100644 --- a/Core/music_macros.asm +++ b/Core/music_macros.asm @@ -27,7 +27,7 @@ ; When $xy < $80 ; $x = Duration Rate (0-7) ; $y = Velocity Rate (0-15) -; VByte itself means the length of the following note +; VByte itself means the length of the following note ; (48 = quarter note, usually). macro SetDuration(v) @@ -156,10 +156,10 @@ dw db endmacro -; Set the left and right position of the sound. -; The range of values is as narrow as 0 to 20 -; (the actual setting ratio is defined in the internal table). -; Depending on the version, it depends on whether the large value is left or right. +; Set the left and right position of the sound. +; The range of values is as narrow as 0 to 20 +; (the actual setting ratio is defined in the internal table). +; Depending on the version, it depends on whether the large value is left or right. ; The upper 2 bits are used for phase inversion. ; Lower-5bit for pan value (0-20), higher-2bit is used for phase reverse switch. macro SetPan(v) @@ -171,7 +171,7 @@ macro PanFade(length, dest) db $E2, , endmacro -; Enables vibrato (pitch fluctuation / pitch swing). +; Enables vibrato (pitch fluctuation / pitch swing). ; Set zz-sized vibrato at yy speed after xx time. macro VibratoOn(delay, rate, depth) db $E3, , , @@ -187,24 +187,24 @@ db $E6, , endmacro ; Specifies the playing speed of the song. -; Value of about 24/60 is written. +; Value of about 24/60 is written. macro TempoFade(length, dest) db $E8, , endmacro -; Raises the playing pitch of all channels by xx +; Raises the playing pitch of all channels by xx ; (negative numbers can be specified). macro GlobalTranspose(tone) db $E9, endmacro -; Raises the playing pitch of a single channel by xx +; Raises the playing pitch of a single channel by xx ; (negative numbers can also be specified). macro ChannelTranspose(tone) db $EA, endmacro -; Enable tremolo (volume fluctuation). +; Enable tremolo (volume fluctuation). ; Set the tremolo of the size of zz to be applied at the speed of yy after xx time. macro TremoloOn(delay, rate, depth) db $EB, , , @@ -218,22 +218,22 @@ macro ChannelVolumeFade(length, dest) db $EE, , endmacro -; After temporarily setting the vibrato depth to 0, +; After temporarily setting the vibrato depth to 0, ; it will smoothly return to the original value over xx time. macro VibratoFade(length) db $F0, endmacro -; Specifies that subsequent sounds will be -; "higher by zz over yy time after xx time." +; Specifies that subsequent sounds will be +; "higher by zz over yy time after xx time." ; zz is a semitone unit, and you can specify a negative number. macro PitchEnvelopeTo(delay, length, key) db $F1, , , endmacro -; Specifies that subsequent notes will be -; "played at a pitch that is zz higher than normal, -; and will return to normal pitch over yy time after xx time." +; Specifies that subsequent notes will be +; "played at a pitch that is zz higher than normal, +; and will return to normal pitch over yy time after xx time." ; zz is a semitone unit, and you can specify a negative number. macro PitchEnvelopeFrom(delay, length, key) db $F2, , , @@ -243,14 +243,14 @@ macro PitchEnvelopeOff() db $F3 endmacro -; Change the pitch slightly. +; Change the pitch slightly. ; Only positive numbers can be specified, so the pitch cannot be lowered. ; xx = Unsigned. Make the pitch xx/256 semitones higher. macro Tuning(v) db $F4, endmacro -; Specifies the channel and volume at which echo is enabled. +; Specifies the channel and volume at which echo is enabled. ; The value set in the register remains the same. ; xx = Echo Switch (EON) ; yy = Echo Left Volume (EVOL (L)) @@ -284,15 +284,15 @@ endmacro ; (pitch slide vcmd appears but note $90 has been end), utter note $92. ; $90, $e0 01, $f9 $00 $01 $91, $92 -; Smoothly changes the pitch of the sound being pronounced. +; Smoothly changes the pitch of the sound being pronounced. ; After xx time from play, it will be changed to the zz pitch -; (absolute designation) over yy time. -; If you want to raise or lower the sound in the middle of one note, -; write this command continuously. +; (absolute designation) over yy time. +; If you want to raise or lower the sound in the middle of one note, +; write this command continuously. ; If the pronunciation time is long, you can write it with Thai. -; Normally, after one Note, it waits for the length of the note -; and then processes the next byte, but only this command +; Normally, after one Note, it waits for the length of the note +; and then processes the next byte, but only this command ; is read and processed immediately. macro PitchSlide(delay, length, note) db $F9, , , @@ -343,23 +343,23 @@ Tie = $C8 Rest = $C9 ; Percussion Note ($CA-DF) -; VByte itself means percussion note (#). +; VByte itself means percussion note (#). ; Relations between percussion note and SRCN depends on $FA. -; By default, percussion uses the same instrument set as the song, -; and all percussion is keyed on with a note of $A4. -; The starting ID to use for all channels can be redefined by VCMD $FA. +; By default, percussion uses the same instrument set as the song, +; and all percussion is keyed on with a note of $A4. +; The starting ID to use for all channels can be redefined by VCMD $FA. ; ========================================================= ; Tone Map -; -; C C+ D D+ E F F+ G G+ A A+ B -; Oc1 80 81 82 83 84 85 86 87 88 89 8A 8B -; Oc2 8C 8D 8E 8F 90 91 92 93 94 95 96 97 -; Oc3 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 -; Oc4 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF -; Oc5 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB -; Oc6 BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 +; +; C C+ D D+ E F F+ G G+ A A+ B +; Oc1 80 81 82 83 84 85 86 87 88 89 8A 8B +; Oc2 8C 8D 8E 8F 90 91 92 93 94 95 96 97 +; Oc3 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 +; Oc4 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF +; Oc5 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB +; Oc6 BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C1 = $80 C1s = $81 @@ -437,4 +437,4 @@ G6 = $C3 G6s = $C4 A6 = $C5 A6s = $C6 -B6 = $C7 \ No newline at end of file +B6 = $C7 diff --git a/Core/tables.asm b/Core/tables.asm index 7c09e16..490534a 100644 --- a/Core/tables.asm +++ b/Core/tables.asm @@ -101,7 +101,7 @@ Module09_Overworld: Module09_MirrorWarp ; 0x2C Module09_2D_WaitForBird ; 0x2D Module09_2E_Whirlpool ; 0x2E - Module09_2F + Module09_2F Module07_Underworld: @@ -249,23 +249,23 @@ STA.w $0AAE ; PALSPR2 ; PALBG ; 0x00 - Kalyxo Castle -; 0x01 - Blue +; 0x01 - Blue ; 0x02 - House -; 0x03 - Green +; 0x03 - Green ; 0x04 - Glacia Estate Ice ; 0x05 - Zora Temple ; 0x06 - Tail Palace Pink ; 0x07 - Goron Mines Cave Red ; 0x08 - Mushroom Grotto Gray -; 0x09 +; 0x09 ; 0x0A (10) - Ranch Pink ; 0x0B (11) - Another green ; 0x0C - Goron Mines Cave Red ; 0x0D ; 0x0E ; 0x0F -; 0x10 - -; 0x (19) - +; 0x10 - +; 0x (19) - UnderworldPaletteSets: db $00, $00, $03, $01 ; 0x00 @@ -277,7 +277,7 @@ db $04, $04, $03, $0A ; 0x05 House db $0C, $05, $08, $14 ; 0x06 Tail Palace db $0E, $00, $03, $0A ; 0x07 Goron Mines/Caves db $02, $00, $0F, $14 ; 0x08 Castle Basement -db $0A, $02, $00, $07 ; 0x09 +db $0A, $02, $00, $07 ; 0x09 db $02, $00, $0F, $0C ; 0x0A db $06, $00, $06, $07 ; 0x0B db $00, $00, $0E, $12 ; 0x0C Kalyxo Castle @@ -291,7 +291,7 @@ db $08, $00, $04, $0C ; 0x13 Glacia Estate db $08, $00, $04, $09 ; 0x14 db $04, $00, $03, $01 ; 0x15 House db $14, $00, $04, $04 ; 0x16 -db $14, $00, $14, $0C ; 0x17 +db $14, $00, $14, $0C ; 0x17 db $18, $05, $07, $0B ; 0x18 Lava Lands Cave/Turtle Rock db $18, $06, $10, $0C ; 0x19 db $1A, $05, $08, $14 ; 0x1A Dragon Ship @@ -300,7 +300,7 @@ db $06, $00, $03, $0A ; 0x1C db $1C, $00, $03, $01 ; 0x1D db $1E, $00, $0B, $11 ; 0x1E Swordsmith db $04, $00, $0B, $11 ; 0x1F -db $0E, $00, $00, $02 ; 0x20 +db $0E, $00, $00, $02 ; 0x20 db $20, $08, $13, $0D ; 0x21 Ganondorf Boss db $0A, $00, $03, $0A ; 0x22 Zora Temple db $14, $00, $04, $04 ; 0x23 @@ -309,4 +309,3 @@ db $1A, $0A, $00, $00 ; 0x25 Dragon Ship db $00, $00, $03, $02 ; 0x26 db $0E, $00, $03, $07 ; 0x27 db $1A, $05, $05, $0B ; 0x28 Dragon Ship - diff --git a/Sprites/NPCs/farore.asm b/Sprites/NPCs/farore.asm index 564c0c9..541aff6 100644 --- a/Sprites/NPCs/farore.asm +++ b/Sprites/NPCs/farore.asm @@ -11,7 +11,7 @@ !DeathAnimation = 00 ; 00 = normal death, 01 = no death animation !ImperviousAll = 00 ; 00 = Can be attack, 01 = attack will clink on it !SmallShadow = 01 ; 01 = small shadow, 00 = no shadow -!Shadow = 01 ; 00 = don't draw shadow, 01 = draw a shadow +!Shadow = 01 ; 00 = don't draw shadow, 01 = draw a shadow !Palette = 0 ; Unused in this template (can be 0 to 7) !Hitbox = 0 ; 00 to 31, can be viewed in sprite draw tool !Persist = 00 ; 01 = your sprite continue to live offscreen @@ -32,7 +32,7 @@ ; ========================================================= -%Set_Sprite_Properties(Sprite_Farore_Prep, Sprite_Farore_Long) +%Set_Sprite_Properties(Sprite_Farore_Prep, Sprite_Farore_Long) ; ========================================================= @@ -56,13 +56,11 @@ Sprite_Farore_Long: Sprite_Farore_Prep: { PHB : PHK : PLB - - LDA.b #$80 : STA $0CAA, X ; Don't kill Farore when she goes off screen - LDA.l $7EF300 - BEQ .PlayIntro - STZ.w $0DD0, X ; Kill the sprite -.PlayIntro + LDA.b #$80 : STA $0CAA, X ; Don't kill Farore when she goes off screen + LDA.l $7EF300 : BEQ .PlayIntro + STZ.w $0DD0, X ; Kill the sprite + .PlayIntro PLB RTL @@ -75,7 +73,6 @@ Sprite_Farore_Prep: WALKSPEED = 14 STORY_STATE = $B6 - Sprite_Farore_Main: { LDA.w SprAction, X; Load the SprAction @@ -90,22 +87,19 @@ Sprite_Farore_Main: dw MakuArea_FaroreFollowPlayer dw MakuArea_FaroreWaitForKydrog - ; 00 IntroStart: { LDA #$01 : STA InCutScene LDA $B6 : CMP.b #$01 : BEQ .maku_area CMP.b #$02 : BEQ .waiting - - %GotoAction(1) - RTS + %GotoAction(1) + RTS + .maku_area + %GotoAction(6) + RTS - .maku_area - %GotoAction(6) - RTS - - .waiting + .waiting %GotoAction(7) RTS } @@ -115,13 +109,11 @@ Sprite_Farore_Main: { LDA.w WALKSPEED : STA.b $57 ; Slow Link down for the cutscene LDA.b #$08 : STA.b $49 ; Auto-movement north - - LDA.b $20 ; Link's Y Position - CMP.b #$9C ; Y = 6C - BCC .linkistoofar - %GotoAction(2) - .linkistoofar + ; Link's Y Position - Y = 6C + LDA.b $20 : CMP.b #$9C : BCC .linkistoofar + %GotoAction(2) + .linkistoofar %PlayAnimation(6, 6, 8) ; Farore look towards Link RTS } @@ -129,27 +121,24 @@ Sprite_Farore_Main: ; 02 MoveLeftTowardsFarore: { - ; Move Link Left + ; Move Link Left LDA.w WALKSPEED : STA.b $57 ; Slow Link down for the cutscene - LDA.b #$02 : STA.b $49 + LDA.b #$02 : STA.b $49 - LDA.b $22 ; Link's X position - CMP.b #$1A - BCS .linkistoofar - - STZ.b $49 ; kill automove - LDA.b #$20 - STA.w SprTimerA, X ; set timer A to 0x10 - %PlayAnimation(0, 0, 8) - %GotoAction(3) - - .linkistoofar + ; Link's X position + LDA.b $22 : CMP.b #$1A : BCS .linkistoofar + STZ.b $49 ; kill automove + LDA.b #$20 + STA.w SprTimerA, X ; set timer A to 0x10 + %PlayAnimation(0, 0, 8) + %GotoAction(3) + .linkistoofar RTS } ; 03 WaitAndMessage: - { + { %PlayAnimation(1, 2, 8) LDA.b #$15 JSL Sprite_ApplySpeedTowardsPlayer @@ -159,7 +148,7 @@ Sprite_Farore_Main: STZ $2F LDA #$00 : STA InCutScene %ShowUnconditionalMessage($0E) ; "I am Farore, the Oracle of Secrets." - + %GotoAction(4) + RTS @@ -189,7 +178,7 @@ Sprite_Farore_Main: LDA #$02 : STA $7EF3C5 ; (0 - intro, 1 - pendants, 2 - crystals) LDA #$05 : STA $012D ; turn off rain sound - LDA #$01 : STA $B6 ; Set Story State + LDA #$01 : STA $B6 ; Set Story State JSL Sprite_LoadGfxProperties %GotoAction(6) @@ -213,7 +202,7 @@ Sprite_Farore_Main: } ; 07 - ; Look at the RAM SprY to $0D60, the first few are the actual positions of the sprite + ; Look at the RAM SprY to $0D60, the first few are the actual positions of the sprite ; that you can just set manually or $0D40 and $0D50 are the "speeds" of the sprites irrc ; You can set one of the speeds and then call the function called Sprite_Move ; And then that will handle it applying the speed for you @@ -242,17 +231,17 @@ Sprite_Farore_Draw: .nextTile PHX ; Save current Tile Index? - + TXA : CLC : ADC $06 ; Add Animation Index Offset PHA ; Keep the value with animation index offset? - ASL A : TAX + ASL A : TAX REP #$20 LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y - AND.w #$0100 : STA $0E + AND.w #$0100 : STA $0E INY LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y CLC : ADC #$0010 : CMP.w #$0100 @@ -269,14 +258,14 @@ Sprite_Farore_Draw: INY LDA .properties, X : STA ($90), Y - PHY - + PHY + TYA : LSR #2 : TAY - + LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer - + PLY : INY - + PLX : DEX : BPL .nextTile PLX diff --git a/Sprites/NPCs/goron.asm b/Sprites/NPCs/goron.asm index df4e1f6..2cc16b6 100644 --- a/Sprites/NPCs/goron.asm +++ b/Sprites/NPCs/goron.asm @@ -9,7 +9,7 @@ !DeathAnimation = 00 ; 00 = normal death, 01 = no death animation !ImperviousAll = 00 ; 00 = Can be attack, 01 = attack will clink on it !SmallShadow = 00 ; 01 = small shadow, 00 = no shadow -!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow +!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow !Palette = 00 ; Unused in this template (can be 0 to 7) !Hitbox = 02 ; 00 to 31, can be viewed in sprite draw tool !Persist = 00 ; 01 = your sprite continue to live offscreen @@ -57,7 +57,7 @@ Sprite_Goron_Prep: LDA.b #$03 : STA.w SprAction, X JMP ++ + - PHX + PHX LDX $8A LDA.l $7EF280,X : CMP.b #$20 : BEQ +++ PLX @@ -150,17 +150,17 @@ Sprite_KalyxoGoron_Draw: .nextTile PHX ; Save current Tile Index? - + TXA : CLC : ADC $06 ; Add Animation Index Offset PHA ; Keep the value with animation index offset? - ASL A : TAX + ASL A : TAX REP #$20 LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y - AND.w #$0100 : STA $0E + AND.w #$0100 : STA $0E INY LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y CLC : ADC #$0010 : CMP.w #$0100 @@ -177,14 +177,14 @@ Sprite_KalyxoGoron_Draw: INY LDA .properties, X : STA ($90), Y - PHY - + PHY + TYA : LSR #2 : TAY - + LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer - + PLY : INY - + PLX : DEX : BPL .nextTile PLX @@ -228,17 +228,17 @@ Sprite_EonGoron_Draw: .nextTile PHX ; Save current Tile Index? - + TXA : CLC : ADC $06 ; Add Animation Index Offset PHA ; Keep the value with animation index offset? - ASL A : TAX + ASL A : TAX REP #$20 LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y - AND.w #$0100 : STA $0E + AND.w #$0100 : STA $0E INY LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y CLC : ADC #$0010 : CMP.w #$0100 @@ -255,14 +255,14 @@ Sprite_EonGoron_Draw: INY LDA .properties, X : STA ($90), Y - PHY - + PHY + TYA : LSR #2 : TAY - + LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer - + PLY : INY - + PLX : DEX : BPL .nextTile PLX diff --git a/Sprites/all_sprites.asm b/Sprites/all_sprites.asm index fe40f3f..7a2aa77 100644 --- a/Sprites/all_sprites.asm +++ b/Sprites/all_sprites.asm @@ -71,8 +71,7 @@ DontTeleportWithoutFlippers: LDA.l $7EF356 : BNE + RTL + - #_1EEEE4: LDA.b #$2E - #_1EEEE6: STA.b $11 + LDA.b #$2E : STA.b $11 RTL } @@ -90,8 +89,7 @@ Graphics_Transfer: JSR ApplyManhandlaGraphics JSR ApplyManhandlaPalette + - #_02BE5E: LDA.b $11 - #_02BE60: CMP.b #$02 + LDA.b $11 : CMP.b #$02 RTL }