diff --git a/bin/check-attract-mode.sh b/bin/check-attract-mode.sh index d1eb187..d176634 100755 --- a/bin/check-attract-mode.sh +++ b/bin/check-attract-mode.sh @@ -50,13 +50,13 @@ cat res/GAMES.CONF | grep '^\!to' src/demo/*.a | cut -d'/' -f5-|cut -d'#' -f1 | grep -v "SPCARTOON" | while read f; do - grep "$f=0" res/ATTRACT.CONF >/dev/null || echo "unused demo: $f"; + grep "^$f=0" res/ATTRACT.CONF >/dev/null || echo "unused demo: $f"; done # warn about unused slideshows cd res/SS for f in *.CONF; do - grep "$f" ../ATTRACT.CONF >/dev/null || echo "unused slideshow: $f"; + grep "^$f=" ../ATTRACT.CONF >/dev/null || echo "unused slideshow: $f"; done cd ../.. diff --git a/res/ACTION.HGR.UNCOMPRESSED/ODIN b/res/ACTION.HGR.UNCOMPRESSED/ODIN new file mode 100644 index 0000000..da21d0c Binary files /dev/null and b/res/ACTION.HGR.UNCOMPRESSED/ODIN differ diff --git a/res/ACTION.HGR/ODIN b/res/ACTION.HGR/ODIN new file mode 100644 index 0000000..667ad12 Binary files /dev/null and b/res/ACTION.HGR/ODIN differ diff --git a/res/ATTRACT.CONF b/res/ATTRACT.CONF index 2b18915..5ffe991 100644 --- a/res/ATTRACT.CONF +++ b/res/ATTRACT.CONF @@ -66,6 +66,7 @@ ACTBOXING.CONF=2 CATBOARD.CONF=1 ACTDIVEBMB.CONF=2 ACTDHGRWD.CONF=4 +TITLENR2.CONF=1 SHR3.CONF=5 #set 4 diff --git a/res/ATTRACT/ODIN b/res/ATTRACT/ODIN new file mode 100644 index 0000000..9f78fe6 --- /dev/null +++ b/res/ATTRACT/ODIN @@ -0,0 +1,8 @@ +# +# Attract mode for ODIN +# This file is automatically generated +# + +ODIN=A + +[eof] diff --git a/res/GAMEHELP/ODIN b/res/GAMEHELP/ODIN new file mode 100644 index 0000000..4b248e0 --- /dev/null +++ b/res/GAMEHELP/ODIN @@ -0,0 +1,18 @@ + + + + + + + Place your pieces + + Flip your opponent's pieces + + + + joystick or keyboard + + < select > + + press Return to place +[eof] diff --git a/res/GAMES.CONF b/res/GAMES.CONF index 49eadf4..2504680 100755 --- a/res/GAMES.CONF +++ b/res/GAMES.CONF @@ -65,6 +65,7 @@ 00001,MU.TORERE=Mu Torere/1988 00001,NIMWIT=Nimwit/1988 00001,NINE.MENS=Nine Men's Morris/1988 +00001,ODIN=Odin/1982 10001,ONE.ON.ONE=One on One/1983 01100,PAY.DAY=Pay Day/1990 00001,PENSATE=Pensate/1983 diff --git a/res/SS/ACTBOARD.CONF b/res/SS/ACTBOARD.CONF index 514486f..faded61 100644 --- a/res/SS/ACTBOARD.CONF +++ b/res/SS/ACTBOARD.CONF @@ -5,6 +5,7 @@ REVERSI CHECKERS MICROCHESS +ODIN PENSATE GO diff --git a/res/SS/ACTNOPQR2.CONF b/res/SS/ACTNOPQR2.CONF index fb2a617..7a3c6cb 100644 --- a/res/SS/ACTNOPQR2.CONF +++ b/res/SS/ACTNOPQR2.CONF @@ -6,5 +6,6 @@ ONE.ON.ONE2=ONE.ON.ONE ROCK.N.SCROLL POOL NIMWIT +ODIN [eof] diff --git a/res/SS/CATBOARD.CONF b/res/SS/CATBOARD.CONF index 4441018..3e2cb9f 100644 --- a/res/SS/CATBOARD.CONF +++ b/res/SS/CATBOARD.CONF @@ -3,6 +3,7 @@ # PENSATE +ODIN REVERSI GO CHECKERS diff --git a/res/SS/TITLENOPQR.CONF b/res/SS/TITLENOPQR.CONF index 2d5ed65..068a993 100644 --- a/res/SS/TITLENOPQR.CONF +++ b/res/SS/TITLENOPQR.CONF @@ -7,9 +7,5 @@ POOL NINE.MENS NIMWIT ONE.ON.ONE -REVERSI -PLACE.BALL -PENSATE -PITSTOP.II [eof] diff --git a/res/SS/TITLENR2.CONF b/res/SS/TITLENR2.CONF new file mode 100644 index 0000000..1ba509f --- /dev/null +++ b/res/SS/TITLENR2.CONF @@ -0,0 +1,11 @@ +# +# HGR title slideshow of games that begin with "N"-"R" +# + +REVERSI +PLACE.BALL +ODIN +PENSATE +PITSTOP.II + +[eof] diff --git a/res/TITLE.HGR.UNPACKED/ODIN b/res/TITLE.HGR.UNPACKED/ODIN new file mode 100644 index 0000000..98d2662 Binary files /dev/null and b/res/TITLE.HGR.UNPACKED/ODIN differ diff --git a/res/TITLE.HGR/ODIN b/res/TITLE.HGR/ODIN new file mode 100644 index 0000000..bc6b59d Binary files /dev/null and b/res/TITLE.HGR/ODIN differ diff --git a/res/dsk/odin (4am pack).po b/res/dsk/odin (4am pack).po new file mode 100644 index 0000000..3f96549 Binary files /dev/null and b/res/dsk/odin (4am pack).po differ diff --git a/res/history.md b/res/history.md index 40e91e1..1e880dc 100644 --- a/res/history.md +++ b/res/history.md @@ -27,6 +27,7 @@ - Mu Torere - Nimwit - Nine Men's Morris +- Odin - Pay Day - Place Ball - Press Your Luck diff --git a/res/notes/wishlist.txt b/res/notes/wishlist.txt index 3a414f2..35c6864 100644 --- a/res/notes/wishlist.txt +++ b/res/notes/wishlist.txt @@ -42,7 +42,6 @@ John Madden Football Ken Uston's Professional Blackjack (latest version is 1.23?) [4am crack] Maxi Golf Micro League Baseball (1984 version, not 1980) -Odin (Odesta) [needs-crack][48K] Olympic Decathlon [priority] Pro Football (Systems Design Lab) Pro Golf (Home-Computer Software) diff --git a/res/ports/odin/Makefile b/res/ports/odin/Makefile new file mode 100644 index 0000000..d1a8622 --- /dev/null +++ b/res/ports/odin/Makefile @@ -0,0 +1,55 @@ +# https://sourceforge.net/projects/acme-crossass/ +ACME=acme + +# https://github.com/mach-kernel/cadius +CADIUS=cadius + +EXOMIZER=exomizer mem -lnone -P23 -f -q + +BUILDDIR=build +DISKVOLUME=ODIN +LOADER=$(BUILDDIR)/LOADER.SYSTEM\#FF2000 +EXE=$(BUILDDIR)/ODIN\#068000 +COMPRESSED1=src/OBJ1.X +COMPRESSED2=src/OBJ2.X +SOURCES=$(wildcard src/*.a) $(COMPRESSED1) $(COMPRESSED2) +RES=$(wildcard res/*) $(wildcard ../common/res/*) +BUILDDISK=$(BUILDDIR)/$(DISKVOLUME).po + +.PHONY: clean mount all + +$(BUILDDISK): $(EXE) $(LOADER) $(RES) + +$(LOADER): $(SOURCES) | $(BUILDDIR) + $(ACME) src/loader.a + $(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(LOADER)" -C + @touch "$@" + +$(EXE): $(SOURCES) $(COMPRESSED1) $(COMPRESSED2) | $(BUILDDIR) + $(ACME) src/odin.a + $(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(EXE)" -C + @touch "$@" + +$(RES): $(BUILDDIR) + $(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$@" -C + @touch "$@" + +$(COMPRESSED1): + $(EXOMIZER) src/OBJ1@0x0800 -o "$@" + +$(COMPRESSED2): + $(EXOMIZER) src/OBJ2@0x4000 -o "$@" + +mount: $(BUILDDISK) + @open "$(BUILDDISK)" + +clean: + rm -rf "$(BUILDDIR)" + +$(BUILDDIR): + mkdir -p "$@" + $(CADIUS) CREATEVOLUME "$(BUILDDISK)" "$(DISKVOLUME)" 140KB -C + +all: clean mount + +.NOTPARALLEL: diff --git a/res/ports/odin/notes.txt b/res/ports/odin/notes.txt new file mode 100644 index 0000000..791f4e1 --- /dev/null +++ b/res/ports/odin/notes.txt @@ -0,0 +1,43 @@ +bootloader sets up $200..$2FF (important) +also $4E=A5 (important) + +$26=8C +$3E=00 +$3F=8C +$41=00 +$C0=00 +$C1=13 +$C2=FE +$C3=DF +$C4=00 +$C5=00 +$C6=FF +$C7=FF +$C8=51 +$C9=8B +(none seem important) + +bootloader on text page 1 pushes $7F/$41 then exits via $FC58 +then execution continues at $7F42 +uses $4E as part of decryption key +decrypts downward until self-modifies branch target +then execution continues at $7F6E +which copies/decrypts onto zero page + stack +RTS pops address just decrypted onto bottom of stack +then execution continues at $00AB +clears memory $8ABC..$BFFF and $0C00..$1FFF +uses $200..$25F as decryption key +decrypts more then self-modifies to jump to $7E54 + +entry point at $7E54 clears part of zero page where +previous phase lived, then continues to game + +once execution hits $7E54, all of zero page (including $4E) +has been clobbered and $200..$2FF is never used again +all registers are irrelevant +stack is irrelevant +regions that were clobbered earlier are irrelevant + +can break at $7E54, capture $800..$BFF and $4000..$8ABB, +then later jump to $7E54 to start game +($4000..$5FFF and $800..$BFF still showing title screen at this point) diff --git a/res/ports/odin/src/OBJ1 b/res/ports/odin/src/OBJ1 new file mode 100644 index 0000000..92d6f53 Binary files /dev/null and b/res/ports/odin/src/OBJ1 differ diff --git a/res/ports/odin/src/OBJ1.X b/res/ports/odin/src/OBJ1.X new file mode 100644 index 0000000..69901ba Binary files /dev/null and b/res/ports/odin/src/OBJ1.X differ diff --git a/res/ports/odin/src/OBJ2 b/res/ports/odin/src/OBJ2 new file mode 100644 index 0000000..80c1944 Binary files /dev/null and b/res/ports/odin/src/OBJ2 differ diff --git a/res/ports/odin/src/OBJ2.X b/res/ports/odin/src/OBJ2.X new file mode 100644 index 0000000..f25d1f0 Binary files /dev/null and b/res/ports/odin/src/OBJ2.X differ diff --git a/res/ports/odin/src/loader.a b/res/ports/odin/src/loader.a new file mode 100644 index 0000000..aba90c3 --- /dev/null +++ b/res/ports/odin/src/loader.a @@ -0,0 +1,25 @@ +!cpu 6502 +*=$2000 +!to "build/LOADER.SYSTEM#FF2000",plain + + !src "../common/src/constants.a" + !src "../common/src/macros.a" + + +READ_ENTIRE_FILE parm_boot_open, parm_boot_read + jmp (entry) + +parm_boot_open + !byte 3 + !word filename + !word $2100 + !byte 0 + +parm_boot_read + !byte 4 + !byte 1 +entry !word $8000 + !word $FFFF + !word 0 + +filename + !text 4,"ODIN" diff --git a/res/ports/odin/src/odin.a b/res/ports/odin/src/odin.a new file mode 100644 index 0000000..ea4065a --- /dev/null +++ b/res/ports/odin/src/odin.a @@ -0,0 +1,45 @@ +!cpu 6502 +*=$8000 +!to "build/ODIN#068000",plain + + !src "../common/src/constants.a" + !src "../common/src/macros.a" + + jmp start + +compressed_data + !bin "src/OBJ1.X" + !bin "src/OBJ2.X" +FORWARD_DECRUNCHING = 1 +SHOW_PROGRESS_DURING_DECRUNCH = 1 +kExoProgressWidth = 12 ; depends on total size, max 38 + !src "../common/src/exodecrunch.a" + +start + +INIT_MACHINE + jsr decrunch ; compressed data contains target address + jsr decrunch_no_reset_progress +!if * != $AA2F { + !serious "Adjust prelaunch to RTS at ", * +} + bit GFXMODE + bit PAGE2 + bit HIRES + bit MIXEDGFX + bit CLEARKBD + ldy #$19 ; wait loop based on code from original game +- bit KBD ; but allow pressing key to start game early + bmi + + lda #$00 + jsr ROM_WAIT + dey + bne - ++ bit CLEARKBD + jmp $7E54 + +get_crunched_byte + lda compressed_data + inc get_crunched_byte+1 + bne + + inc get_crunched_byte+2 ++ rts diff --git a/src/index/artwork.idx.a b/src/index/artwork.idx.a index 22b5df0..2b96ba7 100644 --- a/src/index/artwork.idx.a +++ b/src/index/artwork.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2566141 + !be24 2585326 !le16 592 diff --git a/src/index/attract.idx.a b/src/index/attract.idx.a index 0e09c7a..198dcec 100644 --- a/src/index/attract.idx.a +++ b/src/index/attract.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2550629 - !le16 1526 + !be24 2569733 + !le16 1543 diff --git a/src/index/cache00.idx.a b/src/index/cache00.idx.a index b661e51..b12697e 100644 --- a/src/index/cache00.idx.a +++ b/src/index/cache00.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2538517 + !be24 2557550 !le16 507 diff --git a/src/index/cache01.idx.a b/src/index/cache01.idx.a index 31f2aa1..d266217 100644 --- a/src/index/cache01.idx.a +++ b/src/index/cache01.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2541060 + !be24 2560113 !le16 876 diff --git a/src/index/cache10.idx.a b/src/index/cache10.idx.a index 9d1d307..159a965 100644 --- a/src/index/cache10.idx.a +++ b/src/index/cache10.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2544024 + !be24 2563097 !le16 829 diff --git a/src/index/cache11.idx.a b/src/index/cache11.idx.a index 07e2dc1..6ee8db0 100644 --- a/src/index/cache11.idx.a +++ b/src/index/cache11.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2547902 + !be24 2566995 !le16 1283 diff --git a/src/index/count00.a b/src/index/count00.a index eb7b2c8..6ae9328 100644 --- a/src/index/count00.a +++ b/src/index/count00.a @@ -3,4 +3,4 @@ ; ; This file is automatically generated ; -!word 38 +!word 39 diff --git a/src/index/count01.a b/src/index/count01.a index a2b3f31..d572194 100644 --- a/src/index/count01.a +++ b/src/index/count01.a @@ -3,4 +3,4 @@ ; ; This file is automatically generated ; -!word 57 +!word 58 diff --git a/src/index/count10.a b/src/index/count10.a index 057de96..f5e679b 100644 --- a/src/index/count10.a +++ b/src/index/count10.a @@ -3,4 +3,4 @@ ; ; This file is automatically generated ; -!word 59 +!word 60 diff --git a/src/index/count11.a b/src/index/count11.a index 7cf7dac..7bfd73d 100644 --- a/src/index/count11.a +++ b/src/index/count11.a @@ -3,4 +3,4 @@ ; ; This file is automatically generated ; -!word 83 +!word 84 diff --git a/src/index/coverfade.idx.a b/src/index/coverfade.idx.a index 97d90b4..e985329 100644 --- a/src/index/coverfade.idx.a +++ b/src/index/coverfade.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2566733 + !be24 2585918 !le16 306 diff --git a/src/index/credits.idx.a b/src/index/credits.idx.a index 45975bc..f1fe912 100644 --- a/src/index/credits.idx.a +++ b/src/index/credits.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2567383 + !be24 2586568 !le16 336 diff --git a/src/index/decrunch.idx.a b/src/index/decrunch.idx.a index 99bbbae..e91637b 100644 --- a/src/index/decrunch.idx.a +++ b/src/index/decrunch.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2567719 + !be24 2586904 !le16 303 diff --git a/src/index/demo.idx.a b/src/index/demo.idx.a index 66112bd..92cf56c 100644 --- a/src/index/demo.idx.a +++ b/src/index/demo.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2053780 + !be24 2061933 !le16 69 diff --git a/src/index/dfx.idx.a b/src/index/dfx.idx.a index c976ad2..d24ff81 100644 --- a/src/index/dfx.idx.a +++ b/src/index/dfx.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2554795 + !be24 2573916 !le16 1640 diff --git a/src/index/dgr.fizzle.idx.a b/src/index/dgr.fizzle.idx.a index 478ebbd..8e466cd 100644 --- a/src/index/dgr.fizzle.idx.a +++ b/src/index/dgr.fizzle.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2567115 + !be24 2586300 !le16 67 diff --git a/src/index/dgr.idx.a b/src/index/dgr.idx.a index 9d4b33f..c2767cd 100644 --- a/src/index/dgr.idx.a +++ b/src/index/dgr.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2566129 + !be24 2585314 !le16 12 diff --git a/src/index/dhgr.idx.a b/src/index/dhgr.idx.a index 4ee5932..36f6c99 100644 --- a/src/index/dhgr.idx.a +++ b/src/index/dhgr.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2565015 + !be24 2584200 !le16 1062 diff --git a/src/index/dtitle.idx.a b/src/index/dtitle.idx.a index c029ebf..2317a41 100644 --- a/src/index/dtitle.idx.a +++ b/src/index/dtitle.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2562559 + !be24 2581733 !le16 365 diff --git a/src/index/fx.idx.a b/src/index/fx.idx.a index 58e575d..d177aaa 100644 --- a/src/index/fx.idx.a +++ b/src/index/fx.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2552155 + !be24 2571276 !le16 2640 diff --git a/src/index/gamehelp.idx.a b/src/index/gamehelp.idx.a index 14b7729..f72509e 100644 --- a/src/index/gamehelp.idx.a +++ b/src/index/gamehelp.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2556793 - !le16 1444 + !be24 2575914 + !le16 1455 diff --git a/src/index/gr.fizzle.idx.a b/src/index/gr.fizzle.idx.a index 03f7c2c..812eaee 100644 --- a/src/index/gr.fizzle.idx.a +++ b/src/index/gr.fizzle.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2567039 + !be24 2586224 !le16 76 diff --git a/src/index/gr.idx.a b/src/index/gr.idx.a index 860d9b2..9585d2f 100644 --- a/src/index/gr.idx.a +++ b/src/index/gr.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2566077 + !be24 2585262 !le16 52 diff --git a/src/index/helptext.idx.a b/src/index/helptext.idx.a index 16549e5..ac1bba4 100644 --- a/src/index/helptext.idx.a +++ b/src/index/helptext.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2567182 + !be24 2586367 !le16 201 diff --git a/src/index/hgr0.idx.a b/src/index/hgr0.idx.a index 6ac479d..2819c53 100644 --- a/src/index/hgr0.idx.a +++ b/src/index/hgr0.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2562924 + !be24 2582098 !le16 421 diff --git a/src/index/hgr1.idx.a b/src/index/hgr1.idx.a index fba4dba..2361a29 100644 --- a/src/index/hgr1.idx.a +++ b/src/index/hgr1.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2563345 + !be24 2582519 !le16 192 diff --git a/src/index/hgr2.idx.a b/src/index/hgr2.idx.a index 331ff61..a8dfd2d 100644 --- a/src/index/hgr2.idx.a +++ b/src/index/hgr2.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2563537 + !be24 2582711 !le16 107 diff --git a/src/index/hgr3.idx.a b/src/index/hgr3.idx.a index 54e9e37..46175e5 100644 --- a/src/index/hgr3.idx.a +++ b/src/index/hgr3.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2563644 - !le16 281 + !be24 2582818 + !le16 292 diff --git a/src/index/hgr4.idx.a b/src/index/hgr4.idx.a index 72f9c7a..21c054b 100644 --- a/src/index/hgr4.idx.a +++ b/src/index/hgr4.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2563925 + !be24 2583110 !le16 778 diff --git a/src/index/hgr5.idx.a b/src/index/hgr5.idx.a index 8fd28f8..9e91187 100644 --- a/src/index/hgr5.idx.a +++ b/src/index/hgr5.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2564703 + !be24 2583888 !le16 285 diff --git a/src/index/hgr6.idx.a b/src/index/hgr6.idx.a index 77c05eb..ca72fd8 100644 --- a/src/index/hgr6.idx.a +++ b/src/index/hgr6.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2564988 + !be24 2584173 !le16 27 diff --git a/src/index/joystick.idx.a b/src/index/joystick.idx.a index 09167e0..f58ecce 100644 --- a/src/index/joystick.idx.a +++ b/src/index/joystick.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2568022 + !be24 2587207 !le16 2370 diff --git a/src/index/miniattract0.idx.a b/src/index/miniattract0.idx.a index ead18a3..7c22e4b 100644 --- a/src/index/miniattract0.idx.a +++ b/src/index/miniattract0.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2559974 - !le16 852 + !be24 2579126 + !le16 863 diff --git a/src/index/miniattract1.idx.a b/src/index/miniattract1.idx.a index ccf88cd..f05e565 100644 --- a/src/index/miniattract1.idx.a +++ b/src/index/miniattract1.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2560826 + !be24 2579989 !le16 596 diff --git a/src/index/prelaunch.idx.a b/src/index/prelaunch.idx.a index f3ad05d..d7340bf 100644 --- a/src/index/prelaunch.idx.a +++ b/src/index/prelaunch.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2549185 - !le16 1444 + !be24 2568278 + !le16 1455 diff --git a/src/index/res.cover.idx.a b/src/index/res.cover.idx.a index b818da3..0ecc88c 100644 --- a/src/index/res.cover.idx.a +++ b/src/index/res.cover.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 812075 + !be24 819755 !le16 8184 diff --git a/src/index/res.help.idx.a b/src/index/res.help.idx.a index 4caa29a..2e3357b 100644 --- a/src/index/res.help.idx.a +++ b/src/index/res.help.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 828451 + !be24 836131 !le16 8184 diff --git a/src/index/res.title.idx.a b/src/index/res.title.idx.a index 0de8ec3..828d44e 100644 --- a/src/index/res.title.idx.a +++ b/src/index/res.title.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 820259 + !be24 827939 !le16 8192 diff --git a/src/index/search00.idx.a b/src/index/search00.idx.a index 959b042..a07e539 100644 --- a/src/index/search00.idx.a +++ b/src/index/search00.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2537240 - !le16 1277 + !be24 2556253 + !le16 1297 diff --git a/src/index/search01.idx.a b/src/index/search01.idx.a index 2d50643..06c4795 100644 --- a/src/index/search01.idx.a +++ b/src/index/search01.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2539024 - !le16 2036 + !be24 2558057 + !le16 2056 diff --git a/src/index/search10.idx.a b/src/index/search10.idx.a index 2f8b25a..aab89fe 100644 --- a/src/index/search10.idx.a +++ b/src/index/search10.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2541936 - !le16 2088 + !be24 2560989 + !le16 2108 diff --git a/src/index/search11.idx.a b/src/index/search11.idx.a index 3cfcf14..dde29ab 100644 --- a/src/index/search11.idx.a +++ b/src/index/search11.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2544853 - !le16 3049 + !be24 2563926 + !le16 3069 diff --git a/src/index/sfx.idx.a b/src/index/sfx.idx.a index 88f4e5d..2fb3aa4 100644 --- a/src/index/sfx.idx.a +++ b/src/index/sfx.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2556435 + !be24 2575556 !le16 358 diff --git a/src/index/slideshow.idx.a b/src/index/slideshow.idx.a index 7678239..c936072 100644 --- a/src/index/slideshow.idx.a +++ b/src/index/slideshow.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2558237 - !le16 1737 + !be24 2577369 + !le16 1757 diff --git a/src/index/title.idx.a b/src/index/title.idx.a index 11eafc6..612ad5e 100644 --- a/src/index/title.idx.a +++ b/src/index/title.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2561422 - !le16 1137 + !be24 2580585 + !le16 1148 diff --git a/src/index/xsingle.idx.a b/src/index/xsingle.idx.a index 481feca..cd46791 100644 --- a/src/index/xsingle.idx.a +++ b/src/index/xsingle.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 2536616 - !le16 624 + !be24 2555616 + !le16 637 diff --git a/src/prelaunch/odin.a b/src/prelaunch/odin.a new file mode 100644 index 0000000..cec288f --- /dev/null +++ b/src/prelaunch/odin.a @@ -0,0 +1,23 @@ +;license:MIT + +!cpu 6502 +!to "build/PRELAUNCH.INDEXED/ODIN",plain +*=$106 + + !source "src/prelaunch/common.a" + + +ENABLE_ACCEL + lda $AA2F + pha + lda #$60 + sta $AA2F + jsr $8000 + pla + sta $AA2F + +DISABLE_ACCEL + +NEW_RESET_VECTOR $200 + jmp $AA2F + +!if * > $1C0 { + !error "code is too large, ends at ", * +}