diff options
Diffstat (limited to 'macros')
-rwxr-xr-x | macros/asm_macros.asm | 6 | ||||
-rwxr-xr-x | macros/audio_macros.asm | 8 | ||||
-rw-r--r--[-rwxr-xr-x] | macros/event_macros.asm | 61 |
3 files changed, 67 insertions, 8 deletions
diff --git a/macros/asm_macros.asm b/macros/asm_macros.asm index d3f00b0c..7012d7e1 100755 --- a/macros/asm_macros.asm +++ b/macros/asm_macros.asm @@ -7,12 +7,10 @@ homecall: MACRO ld a, [H_LOADEDROMBANK] push af ld a, BANK(\1) - ld [H_LOADEDROMBANK], a - ld [MBC1RomBank], a + call BankswitchCommon call \1 pop af - ld [H_LOADEDROMBANK], a - ld [MBC1RomBank], a + call BankswitchCommon ENDM farcall EQUS "callba" diff --git a/macros/audio_macros.asm b/macros/audio_macros.asm index 95b9ecbc..6daadbc6 100755 --- a/macros/audio_macros.asm +++ b/macros/audio_macros.asm @@ -1,8 +1,8 @@ -StopAllMusic: MACRO - ld a, $ff - call PlaySound -ENDM +;StopAllMusic: MACRO +; ld a, $ff +; call PlaySound +;ENDM Ch1 EQU 0 Ch2 EQU 1 diff --git a/macros/event_macros.asm b/macros/event_macros.asm index 20027209..a3ce9746 100755..100644 --- a/macros/event_macros.asm +++ b/macros/event_macros.asm @@ -57,6 +57,16 @@ event_byte = ((\2) / 8) ld \1, wEventFlags + event_byte ENDM +EventFlagAddressa: MACRO +event_byte = ((\1) / 8) + ld [wEventFlags + event_byte], a + ENDM + +aEventFlagAddress: MACRO +event_byte = ((\1) / 8) + ld a, [wEventFlags + event_byte] + ENDM + ;\1 = event index CheckEventHL: MACRO event_byte = ((\1) / 8) @@ -125,6 +135,27 @@ CheckAndResetEventA: MACRO ld [wEventFlags + ((\1) / 8)], a ENDM +CheckAndSetEventReuseHL: MACRO + IF event_byte != ((\1) / 8) +event_byte = ((\1) / 8) + ld hl, wEventFlags + event_byte + ENDC + + bit (\1) % 8, [hl] + set (\1) % 8, [hl] + ENDM + +CheckAndResetEventReuseHL: MACRO + IF event_byte != ((\1) / 8) +event_byte = ((\1) / 8) + ld hl, wEventFlags + event_byte + ENDC + + bit (\1) % 8, [hl] + res (\1) % 8, [hl] + ENDM + + ;\1 = event index SetEvent: MACRO event_byte = ((\1) / 8) @@ -431,6 +462,36 @@ CheckEitherEventSet: MACRO ENDC ENDM +CheckEitherEventSetReuseA: MACRO + IF event_byte != ((\1) / 8) +event_byte = ((\1) / 8) + ld a, [wEventFlags + event_byte] + ENDC + IF ((\1) / 8) == ((\2) / 8) + ld a, [wEventFlags + ((\1) / 8)] + and (1 << ((\1) % 8)) | (1 << ((\2) % 8)) + ELSE + ; This case doesn't happen in the original ROM. + IF ((\1) % 8) == ((\2) % 8) + push hl + ld a, [wEventFlags + ((\1) / 8)] + ld hl, wEventFlags + ((\2) / 8) + or [hl] + bit ((\1) % 8), a + pop hl + ELSE + push bc + ld a, [wEventFlags + ((\1) / 8)] + and (1 << ((\1) % 8)) + ld b, a + ld a, [wEventFlags + ((\2) / 8)] + and (1 << ((\2) % 8)) + or b + pop bc + ENDC + ENDC + ENDM + ; for handling fixed event bits when events are inserted/removed ;\1 = event index ;\2 = fixed flag bit |