From cdfebce9c34e3116457a7c28e3eb60000d65d7e6 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Fri, 14 Mar 2025 16:31:43 +0100 Subject: Support PAL natively MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also add a make target specific for a PAL version, even if only the full game will be built, not the development "partial" one. Signed-off-by: Miquel Sabaté Solà --- Makefile | 22 ++++++++++++++++------ src/jetpac.s | 30 ++++++++++++++++++++++++++---- src/title.s | 2 +- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index cd212d1..d693d23 100644 --- a/Makefile +++ b/Makefile @@ -28,20 +28,30 @@ deps: @which $(CC65) >/dev/null 2>/dev/null || (echo "ERROR: $(CC65) not found." && false) .PHONY: build -build: build-full build-partial +build: build-full build-partial build-pal .PHONY: build-full build-full: $(Q) rm -f config/generated.s - $(Q) touch config/generated.s + $(Q) echo "HZ = 60" >> config/generated.s - $(E) " CC jetpac (full)" - $(Q) $(CC65) $(CCOPTS) src/jetpac.s -C config/nrom.cfg -o out/jetpac.nes + $(E) " CC jetpac (full, NTSC)" + $(Q) $(CC65) $(CCOPTS) src/jetpac.s -C config/nrom.cfg -o "out/Jetpac (NTSC).nes" .PHONY: build-partial build-partial: $(Q) rm -f config/generated.s $(Q) echo "PARTIAL = 1" >> config/generated.s + $(Q) echo "HZ = 60" >> config/generated.s - $(E) " CC jetpac (partial)" - $(Q) $(CC65) $(CCOPTS) src/jetpac.s -C config/nrom.cfg -Wa -DPARTIAL=1 -o out/partial.nes + $(E) " CC jetpac (partial, NTSC)" + $(Q) $(CC65) $(CCOPTS) src/jetpac.s -C config/nrom.cfg -o "out/Jetpac (DEV).nes" + +.PHONY: build-pal +build-pal: + $(Q) rm -f config/generated.s + $(Q) echo "PAL = 1" >> config/generated.s + $(Q) echo "HZ = 50" >> config/generated.s + + $(E) " CC jetpac (PAL)" + $(Q) $(CC65) $(CCOPTS) src/jetpac.s -C config/nrom.cfg -o "out/Jetpac (PAL).nes" diff --git a/src/jetpac.s b/src/jetpac.s index 8acbb4e..d3eef5a 100644 --- a/src/jetpac.s +++ b/src/jetpac.s @@ -1,12 +1,34 @@ +;; NOTE: automatically generated by the build system. +.include "../config/generated.s" + .segment "HEADER" + ;; Bytes 0-3: NES\0 magic header. .byte 'N', 'E', 'S', $1A + + ;; Standard 32KB + 8KB NROM cartridge. .byte $02, $01 - .res $0A, $00 -.segment "CODE" + ;; Horizontal mirroring, no battery. + .byte $00 -;; NOTE: automatically generated by the build system. -.include "../config/generated.s" + ;; We use the NES 2.0 header mainly to differentiate between NTSC vs PAL in + ;; a way that emulators won't ignore it. + .byte $08 + + ;; Blanked out stuff. + .res $04, $00 + + ;; NTSC vs PAL + .ifdef PAL + .byte $01 + .else + .byte $00 + .endif + + ;; Blanked out stuff. + .res $03, $00 + +.segment "CODE" .include "../include/apu.s" .include "../include/oam.s" diff --git a/src/title.s b/src/title.s index db627ae..3e6da61 100644 --- a/src/title.s +++ b/src/title.s @@ -8,7 +8,7 @@ SPRITE_X_POSITION = $40 ;; The title has a timer as a delay between joypad presses from the player. - TIMER_INIT_VALUE = 20 + TIMER_INIT_VALUE = (HZ / 3) zp_title_timer = $30 ;; Initialize all the elements for the title screen. -- cgit v1.2.3