git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

commit 2de8c0dc5b41d44db7a8429d41134b3f7cc9c1f9
parent 2a65101b1b6a4a0f02e32d565262a4c9b3c4e01c
Author: Michel Iwaniec <46843052+michel-iwaniec@users.noreply.github.com>
Date:   Tue, 15 Oct 2024 14:44:17 +0100

NES: Add delay function for compatibility (#718)


Diffstat:
Mgbdk-lib/libc/targets/mos6502/nes/Makefile1+
Agbdk-lib/libc/targets/mos6502/nes/delay.s59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 60 insertions(+), 0 deletions(-)

diff --git a/gbdk-lib/libc/targets/mos6502/nes/Makefile b/gbdk-lib/libc/targets/mos6502/nes/Makefile @@ -17,6 +17,7 @@ ASSRC = f_ibm_full.s f_ibm_sh.s f_italic.s f_min.s f_spect.s \ set_attribute.s set_bk_attributes.s set_tile_submap_attributes.s flush_attributes.s \ nes_palettes.s \ pad.s pad_ex.s \ + delay.s \ rle_decompress.s \ far_ptr.s sdcc_bcall.s mapper.s \ lcd.s \ diff --git a/gbdk-lib/libc/targets/mos6502/nes/delay.s b/gbdk-lib/libc/targets/mos6502/nes/delay.s @@ -0,0 +1,59 @@ +.include "global.s" + +.title "Delay" +.module delay + +.area _HOME +.bndry 0x20 + +; +; NTSC: Delay 1,789,773 / 1000 ~= 1790 cycles -> Y = #252 (24 cycles code cost) +; Dendy: Delay 1,773,448 / 1000 ~= 1773 cycles -> Y = #250 (22 cycles code cost) +; PAL: Delay 1,662,607 / 1000 ~= 1663 cycles -> Y = #234 (25 cycles code cost) +; +__delay_1ms:: +.delay_1ms:: + bit *__SYSTEM + bmi .delay_1ms_dendy + bvs .delay_1ms_pal +.delay_1ms_ntsc: + ldy #252 + bne .delay_1ms_loop +.delay_1ms_pal: + ldy #234 + bne .delay_1ms_loop +.delay_1ms_dendy: + ldy #250 + bne .delay_1ms_loop + +.delay_1ms_loop: + nop + dey + bne .delay_1ms_loop + rts + +; +; Delay AX milliseconds +; +; Entry conditions +; AX = number of milliseconds to delay (1 to 65535) +; +; Registers used: A, X, Y +; +; Single iteration with X = 0 takes 6 + .delay_1ms + 2 + 2 + 2 + 2 + 3 + 6 = .delay_1ms + 23 cycles +; = (((.delay_1ms + 7) * A - 1) + 9) * X + 12 +; +_delay:: +.delay:: +1$: +2$: + jsr .delay_1ms + sec + sbc #1 + bcs 2$ + cpx #0 + beq 3$ + dex + jmp 1$ +3$: + rts

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.