import asm library, written in merlin32

This commit is contained in:
Jason Andersen 2024-02-04 07:14:14 -05:00
parent e0056e1f59
commit 5296a2e9d6
7 changed files with 41 additions and 22 deletions

4
.gitignore vendored
View file

@ -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/

View file

@ -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)

BIN
lib/i256.flib Normal file

Binary file not shown.

View file

@ -34,22 +34,22 @@ MEMORY {
}
/* LMAs */
__block8_lma = 0x08000000|__SLOT_ADDR;
__block9_lma = 0x09000000|__SLOT_ADDR;
__block10_lma = 0x0A000000|__SLOT_ADDR;
__block11_lma = 0x0B000000|__SLOT_ADDR;
__block12_lma = 0x0C000000|__SLOT_ADDR;
__block13_lma = 0x0D000000|__SLOT_ADDR;
__block14_lma = 0x0E000000|__SLOT_ADDR;
__block15_lma = 0x0F000000|__SLOT_ADDR;
__block16_lma = 0x10000000|__SLOT_ADDR;
__block17_lma = 0x11000000|__SLOT_ADDR;
__block18_lma = 0x12000000|__SLOT_ADDR;
__block19_lma = 0x13000000|__SLOT_ADDR;
__block20_lma = 0x14000000|__SLOT_ADDR;
__block21_lma = 0x15000000|__SLOT_ADDR;
__block22_lma = 0x16000000|__SLOT_ADDR;
__block23_lma = 0x17000000|__SLOT_ADDR;
__block8_lma = ( 8<<24)|__SLOT_ADDR;
__block9_lma = ( 9<<24)|__SLOT_ADDR;
__block10_lma = (10<<24)|__SLOT_ADDR;
__block11_lma = (11<<24)|__SLOT_ADDR;
__block12_lma = (12<<24)|__SLOT_ADDR;
__block13_lma = (13<<24)|__SLOT_ADDR;
__block14_lma = (14<<24)|__SLOT_ADDR;
__block15_lma = (15<<24)|__SLOT_ADDR;
__block16_lma = (16<<24)|__SLOT_ADDR;
__block17_lma = (17<<24)|__SLOT_ADDR;
__block18_lma = (18<<24)|__SLOT_ADDR;
__block19_lma = (19<<24)|__SLOT_ADDR;
__block20_lma = (20<<24)|__SLOT_ADDR;
__block21_lma = (21<<24)|__SLOT_ADDR;
__block22_lma = (22<<24)|__SLOT_ADDR;
__block23_lma = (23<<24)|__SLOT_ADDR;
/* Stash preloaded binary data */
__binarydata_lma = 0x70000; /* At least now, its less than 64k */
@ -107,6 +107,9 @@ SECTIONS {
.block23 : { *(.block23 .block23.*) } >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)

View file

@ -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 */

View file

@ -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

View file

@ -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