From 5296a2e9d6ca5adde488f7af0ef4954515034f8f Mon Sep 17 00:00:00 2001 From: "JASON-6700K\\jandersen" Date: Sun, 4 Feb 2024 07:14:14 -0500 Subject: [PATCH] import asm library, written in merlin32 --- .gitignore | 4 ++++ Makefile | 3 ++- lib/i256.flib | Bin 0 -> 3495 bytes rickjr.ld | 44 +++++++++++++++++++++++++++----------------- src/dat_spritesJR.c | 3 +++ src/mapper.h | 2 +- src/scr_credit.c | 7 ++++--- 7 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 lib/i256.flib diff --git a/.gitignore b/.gitignore index 9b430b5..aadf46c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,7 @@ bin/blockgen/.vs/ *.user bin/blockgen/vcxproj/.vs/ bin/blockgen/vcxproj/x64/ +*.pdb +bin/overlayhelper/.vs/ +bin/overlayhelper/vcxproj/.vs/ +bin/overlayhelper/vcxproj/x64/ diff --git a/Makefile b/Makefile index 32b042e..a15260e 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,8 @@ F256 = $(HOME)/code/f256 #SYSLIBDIR = $(SYSTEM)/lib #SYSINCDIR = $(SYSTEM)/include -TMPFLAGS = -D F256=1 -include src/mapper.h -include blocks.h -Wno-unknown-pragmas +#TMPFLAGS = -D F256=1 -include src/mapper.h -include blocks.h -Wno-unknown-pragmas +TMPFLAGS = -D F256=1 -include src/mapper.h -Wno-unknown-pragmas INCCMD = -I$(SYSINCDIR) diff --git a/lib/i256.flib b/lib/i256.flib new file mode 100644 index 0000000000000000000000000000000000000000..de369c40b678c8a8f0045fb5bf2f3ca73628ad79 GIT binary patch literal 3495 zcmeHHT}&KR6rN>wVOdt8OMk`|(}^~fZ5q><)bL`AEop!(X*F$9`{I3=RaQ+*AM~Nx zFxI`xU$FxX(ZDVpX6MfC&^FF4OIv>0YT^=DV{+?*Nzo`xWP>k;ri3alc<$^%p|pwb zGC4VO=G=47eD|F1-21z}<7|R|m*Rg-@oS2|VZeWSz&|zM|7$?lrfObcQ6-i7R&ASL zs>1Vxq}_XmLG)qaB^9xVt*~IkRYTz*6e0{8w&`hwGmOrl()p3n`LWXZsWK8by1bJc zHTC8yuLhN!Yh$zY&c@$(aVQMJ;B3>kYdaX6ZX&#+Vz0B)d7hStUV|HyJ|Q6;Yb;D` z5j(^Sij7Z20+rp7WF)Y)E0T*)cP?5{oGUXBjz0F)LW^@9v?zChv}9VThje7xXfe5v zX`ipktzWxrtr50HFOl1~DCJB# zQ}g?IVg_B^}Tp43w8#GV+InEITlb4-0fB>mj#?^#T(F1y4raancB33rt5@$Rc*c*PxMIO1ds40 z>$Y%G72tqiqZqT}F$Q4~s8M+RrsCFcTd2K;w9ba`dD1qEaVKe?4dX8n;jm0>xQlQ; zJMMSGS;h=uhsVn_0)77h}ECdR)0Q#{=8SX@t($s=YSJU zOK0*!1qOuY8;DlDfSFO$bb(RL_>eb%6X3`POJRu4@6PvpLdDm@*F!gqJ}BSWxOvo? z(jIee#vw2A)H(f zTZ0s?!23ICS~B^qLtbDUKkPqo{8;@-fBh>5Up)?^$BG{sU^x^YKQA;iG)&oL*PQTS zqLiDr&4o!}+@UoSggzjO+pKb%-mKdtTufB&tG_qH(H(yl(ekWY_GHacw>*2G4AQY} zVGYMrjwrqoK3FtWD%&Az{c>Uw@=l);;PSp4z7o0$block23 end_block23 = .; } +/* Trick linker into exposing symbols with values larger than 16 bits */ +INCLUDE overlay.ld + /* OUTPUT_FORMAT { FULL(cart_rom) } */ OUTPUT_FORMAT { BYTE(0x5A) /* pgZ */ @@ -140,10 +143,17 @@ OUTPUT_FORMAT { BYTE(0x00) TRIM(block10) +/* block11 */ + SHORT(11*0x2000) + BYTE(11/8) /* block#/8 = the actual system high byte */ + SHORT(end_block11 - __block11_lma) + BYTE(0x00) + TRIM(block11) + + /* Empty Blocks are not allowed, bring these in as you use them - TRIM(block11) TRIM(block12) TRIM(block13) TRIM(block14) diff --git a/src/dat_spritesJR.c b/src/dat_spritesJR.c index b4aef5b..686e10c 100644 --- a/src/dat_spritesJR.c +++ b/src/dat_spritesJR.c @@ -15,6 +15,7 @@ #ifdef GFXF256 +// $$TODO - move this macro into it's own header #define STR2(x) #x #define STR(x) STR2(x) @@ -48,6 +49,8 @@ INCBIN(".binarydata.haf", haf_256, "data/haf.256"); // Congrats INCBIN(".binarydata.haf", congrats_256, "data/congrats.256"); +INCBIN(".block11.i256", i256lib, "lib/i256.flib"); + #endif /* GFXF256 */ /* eof */ diff --git a/src/mapper.h b/src/mapper.h index afcfd7c..6352635 100644 --- a/src/mapper.h +++ b/src/mapper.h @@ -24,6 +24,6 @@ $$JGA TODO, sort out how to mark an entire file #define CODE_BLOCK(index) #define DATA_BLOCK(index) -#define PAGEIN(_function_) +#define PAGEIN(_function_BLOCK) #endif diff --git a/src/scr_credit.c b/src/scr_credit.c index 4fa4c07..5ad8ffa 100644 --- a/src/scr_credit.c +++ b/src/scr_credit.c @@ -14,10 +14,11 @@ segment "screen"; extern char credits_lz4; extern char incbin_sprites_256_start[]; +extern char incbin_sprites_256_start_high[]; extern char incbin_tiles_256_start[]; extern char incbin_splash_256_start[]; extern char __block23_lma_high[]; - +extern char scr_credit_BLOCK[]; CODE_BLOCK(8) void scr_credit() { @@ -25,8 +26,8 @@ CODE_BLOCK(8) void scr_credit() //$$JGA TODO - fix this *((char*)0x200) = (char)(((long)(&incbin_sprites_256_start))); *((char*)0x201) = (char)(((long)(&incbin_sprites_256_start))>>8); - *((char*)0x202) = incbin_sprites_256_start_high; - *((char*)0x203) = scr_credit_BLOCK; + *((char*)0x202) = (char)(((long)(&incbin_sprites_256_start_high))); + *((char*)0x203) = (char)(((long)(&scr_credit_BLOCK))); // *((char*)0x203) = (char)(((long)(__block23_lma_high))>>8); #endif