diff options
author | yenatch <yenatch@gmail.com> | 2014-07-12 09:02:49 -0400 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2014-07-12 09:02:49 -0400 |
commit | fb11ff7e55be56cef9234c8443614f04f2157a1e (patch) | |
tree | a6aa8d0745bd07d0b80090491b5e4b6652de4420 /macros.asm | |
parent | 15427f532085846ab6b51719be687951a094cb6c (diff) | |
parent | 9f29f21d9d43baa7124991dcf3b093fc6c615706 (diff) |
Merge pull request #48 from yenatch/master
Clean up post-split main.asm. Get rid of static wram addresses. Lay out a foundation for Yellow.
Diffstat (limited to 'macros.asm')
-rw-r--r-- | macros.asm | 286 |
1 files changed, 222 insertions, 64 deletions
@@ -11,6 +11,18 @@ page EQUS "db $49," ; Start a new Pokedex page. dex EQUS "db $5f, $50" ; End a Pokedex entry. +homecall: MACRO + ld a, [H_LOADEDROMBANK] + push af + ld a, BANK(\1) + ld [H_LOADEDROMBANK], a + ld [MBC3RomBank], a + call \1 + pop af + ld [H_LOADEDROMBANK], a + ld [MBC3RomBank], a + ENDM + callba: MACRO ld b, BANK(\1) ld hl, \1 @@ -25,15 +37,45 @@ callab: MACRO ;\1 = X ;\2 = Y -FuncCoord: MACRO -Coord = $C3A0 + 20 * \2 + \1 +hlCoord: MACRO + ld hl, wTileMap + 20 * \2 + \1 + ENDM + +;\1 = X +;\2 = Y +deCoord: MACRO + ld de, wTileMap + 20 * \2 + \1 + ENDM + +;\1 = X +;\2 = Y +bcCoord: MACRO + ld bc, wTileMap + 20 * \2 + \1 + ENDM + +;\1 = X +;\2 = Y +aCoord: MACRO + ld a, [wTileMap + 20 * \2 + \1] + ENDM + +;\1 = X +;\2 = Y +Coorda: MACRO + ld [wTileMap + 20 * \2 + \1], a + ENDM + +;\1 = X +;\2 = Y +dwCoord: MACRO + dw wTileMap + 20 * \2 + \1 ENDM ;\1 = Map Width ;\2 = Rows above (Y-blocks) ;\3 = X movement (X-blocks) EVENT_DISP: MACRO - dw ($C6EF + (\1) + ((\1) + 6) * ((\2) >> 1) + ((\3) >> 1)) ; Ev.Disp + dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\2) >> 1) + ((\3) >> 1)) ; Ev.Disp db \2,\3 ;Y,X ENDM @@ -77,7 +119,7 @@ tileset: MACRO INDOOR EQU 0 CAVE EQU 1 OUTDOOR EQU 2 - + ; macro for two nibbles dn: MACRO db (\1 << 4 | \2) @@ -119,14 +161,30 @@ TX_RAM: MACRO dw \1 ENDM +TX_BCD: MACRO + db $2 + dw \1 + db \2 + ENDM + ; Predef macro. -PREDEF: MACRO - ld a, (\1 - PredefPointers) / 3 +add_predef: MACRO +\1Predef:: + db BANK(\1) + dw \1 + ENDM + +predef_id: MACRO + ld a, (\1Predef - PredefPointers) / 3 + ENDM + +predef: MACRO + predef_id \1 call Predef ENDM - -PREDEF_JUMP: MACRO - ld a, (\1 - PredefPointers) / 3 + +predef_jump: MACRO + predef_id \1 jp Predef ENDM @@ -146,41 +204,6 @@ CH5 EQU 5 CH6 EQU 6 CH7 EQU 7 -;Note Pitch -C_ EQU $0 -C# EQU $1 -D_ EQU $2 -D# EQU $3 -E_ EQU $4 -F_ EQU $5 -F# EQU $6 -G_ EQU $7 -G# EQU $8 -A_ EQU $9 -A# EQU $A -B_ EQU $B - -;drum instruments -snare1 EQU $01 -snare2 EQU $02 -snare3 EQU $03 -snare4 EQU $04 -snare5 EQU $05 -triangle1 EQU $06 -triangle2 EQU $07 -snare6 EQU $08 -snare7 EQU $09 -snare8 EQU $0a -snare9 EQU $0b -cymbal1 EQU $0c -cymbal2 EQU $0d -cymbal3 EQU $0e -mutedsnare1 EQU $0f -triangle3 EQU $10 -mutedsnare2 EQU $11 -mutedsnare3 EQU $12 -mutedsnare4 EQU $13 - unknownsfx0x10: MACRO db $10 db \1 @@ -199,15 +222,149 @@ unknownnoise0x20: MACRO db \3 ENDM -;format: note pitch, length (in 16ths) -note: MACRO - db (\1 << 4) | (\2 - 1) +;format: pitch length (in 16ths) +C_: MACRO + db $00 | (\1 - 1) +ENDM + +C#: MACRO + db $10 | (\1 - 1) +ENDM + +D_: MACRO + db $20 | (\1 - 1) +ENDM + +D#: MACRO + db $30 | (\1 - 1) +ENDM + +E_: MACRO + db $40 | (\1 - 1) +ENDM + +F_: MACRO + db $50 | (\1 - 1) +ENDM + +F#: MACRO + db $60 | (\1 - 1) +ENDM + +G_: MACRO + db $70 | (\1 - 1) +ENDM + +G#: MACRO + db $80 | (\1 - 1) +ENDM + +A_: MACRO + db $90 | (\1 - 1) ENDM -;format: dnote length (in 16ths), instrument -dnote: MACRO +A#: MACRO + db $A0 | (\1 - 1) +ENDM + +B_: MACRO db $B0 | (\1 - 1) - db \2 +ENDM + +;format: instrument length (in 16ths) +snare1: MACRO + db $B0 | (\1 - 1) + db $01 +ENDM + +snare2: MACRO + db $B0 | (\1 - 1) + db $02 +ENDM + +snare3: MACRO + db $B0 | (\1 - 1) + db $03 +ENDM + +snare4: MACRO + db $B0 | (\1 - 1) + db $04 +ENDM + +snare5: MACRO + db $B0 | (\1 - 1) + db $05 +ENDM + +triangle1: MACRO + db $B0 | (\1 - 1) + db $06 +ENDM + +triangle2: MACRO + db $B0 | (\1 - 1) + db $07 +ENDM + +snare6: MACRO + db $B0 | (\1 - 1) + db $08 +ENDM + +snare7: MACRO + db $B0 | (\1 - 1) + db $09 +ENDM + +snare8: MACRO + db $B0 | (\1 - 1) + db $0A +ENDM + +snare9: MACRO + db $B0 | (\1 - 1) + db $0B +ENDM + +cymbal1: MACRO + db $B0 | (\1 - 1) + db $0C +ENDM + +cymbal2: MACRO + db $B0 | (\1 - 1) + db $0D +ENDM + +cymbal3: MACRO + db $B0 | (\1 - 1) + db $0E +ENDM + +mutedsnare1: MACRO + db $B0 | (\1 - 1) + db $0F +ENDM + +triangle3: MACRO + db $B0 | (\1 - 1) + db $10 +ENDM + +mutedsnare2: MACRO + db $B0 | (\1 - 1) + db $11 +ENDM + +mutedsnare3: MACRO + db $B0 | (\1 - 1) + db $12 +ENDM + +mutedsnare4: MACRO + db $B0 | (\1 - 1) + db $13 ENDM ;format: rest length (in 16ths) @@ -229,7 +386,7 @@ octave: MACRO db $E8 - \1 ENDM -togglecall: MACRO +toggleperfectpitch: MACRO db $E8 ENDM @@ -253,18 +410,18 @@ ENDM tempo: MACRO db $ED - db \1 - db \2 + db \1 / $100 + db \1 % $100 ENDM -unknownmusic0xee: MACRO +stereopanning: MACRO db $EE db \1 ENDM -stereopanning: MACRO +volume: MACRO db $F0 - db \1 + db (\1 << 4) | \2 ENDM executemusic: MACRO @@ -293,6 +450,7 @@ endchannel: MACRO db $FF ENDM + ;\1 (byte) = connected map id ;\2 (byte) = connected map width ;\3 (byte) = connected map height @@ -303,12 +461,12 @@ ENDM NORTH_MAP_CONNECTION: MACRO db \1 ; map id dw \7 + (\2 * (\3 - 3)) + \5; "Connection Strip" location - dw $C6EB + \4 ; current map position + dw wOverworldMap + 3 + \4 ; current map position db \6 ; width of connection strip db \2 ; map width db (\3 * 2) - 1 ; y alignment (y coordinate of player when entering map) db (\4 - \5) * -2 ; x alignment (x coordinate of player when entering map) - dw $C6E9 + (\3 * (\2 + 6)) ; window (position of the upper left block after entering the map) + dw wOverworldMap + 1 + (\3 * (\2 + 6)) ; window (position of the upper left block after entering the map) ENDM ;\1 (byte) = connected map id @@ -322,12 +480,12 @@ ENDM SOUTH_MAP_CONNECTION: MACRO db \1 ; map id dw \6 + \4 ; "Conection Strip" location - dw $C6EB + (\8 + 3) * (\7 + 6) + \3 ; current map positoin + dw wOverworldMap + 3 + (\8 + 3) * (\7 + 6) + \3 ; current map positoin db \5 ; width of connection strip db \2 ; map width db 0 ; y alignment (y coordinate of player when entering map) db (\3 - \4) * -2 ; x alignment (x coordinate of player when entering map) - dw $C6EF + \2 ; window (position of the upper left block after entering the map) + dw wOverworldMap + 7 + \2 ; window (position of the upper left block after entering the map) ENDM ;\1 (byte) = connected map id @@ -340,12 +498,12 @@ ENDM EAST_MAP_CONNECTION: MACRO db \1 ; map id dw \6 + (\2 * \4) ; "Connection Strip" location - dw $C6E5 + (\7 + 6) * (\3 + 4) ; current map position + dw wOverworldMap - 3 + (\7 + 6) * (\3 + 4) ; current map position db \5 ; height of connection strip db \2 ; map width db (\3 - \4) * -2 ; y alignment db 0 ; x alignment - dw $C6EF + \2 ; window (position of the upper left block after entering the map) + dw wOverworldMap + 7 + \2 ; window (position of the upper left block after entering the map) ENDM ;\1 (byte) = connected map id @@ -358,10 +516,10 @@ ENDM WEST_MAP_CONNECTION: MACRO db \1 ; map id dw \6 + (\2 * \4) + \2 - 3 ; "Connection Strip" location - dw $C6E8 + (\7 + 6) * (\3 + 3) ; current map position + dw wOverworldMap + (\7 + 6) * (\3 + 3) ; current map position db \5 ; height of connection strip db \2 ; map width db (\3 - \4) * -2 ; y alignment db (\2 * 2) - 1 ; x alignment - dw $C6EE + (2 * \2) ; window (position of the upper left block after entring the map) + dw wOverworldMap + 6 + (2 * \2) ; window (position of the upper left block after entring the map) ENDM |