mirror of
https://github.com/dwsJason/xrick2gs.git
synced 2025-03-12 03:29:50 +00:00
Allocate memory, and decompress sprites
This commit is contained in:
parent
d995117635
commit
df4fa20878
203
asm/drawsprite.s
Normal file
203
asm/drawsprite.s
Normal file
@ -0,0 +1,203 @@
|
||||
*
|
||||
* ORCA/M Format!!
|
||||
* Thunk from C to compiled draw things
|
||||
*
|
||||
case on
|
||||
longa on
|
||||
longi on
|
||||
|
||||
Dummy4 start ASMCODE
|
||||
end
|
||||
*-------------------------------------------------------------------------------
|
||||
|
||||
DrawSprite start ASMCODE
|
||||
PHB
|
||||
PHK
|
||||
PLB
|
||||
ASL A ; A=Sprite Number ($0000-$01C1)
|
||||
TAX ; Y=Target Screen Address ($2000-$9D00)
|
||||
LDA xrickNum,X ; Relative Sprite Number Table
|
||||
JMP (xrickBank,X) ; Bank Number Table
|
||||
|
||||
xrickNum ANOP
|
||||
dc h'5C00 5B00 5A00 5900 5800 5700 5500 5400'
|
||||
dc h'5300 5200 5100 5000 4F00 4D00 4C00 4B00'
|
||||
dc h'4A00 4900 4800 4700 4600 4500 4400 4300'
|
||||
dc h'9100 9000 3500 0E00 0400 1C00 0300 2400'
|
||||
dc h'6200 2B00 1200 0F00 0200 5900 5400 6000'
|
||||
dc h'5A00 6100 5800 0C00 1100 1000 1F00 6900'
|
||||
dc h'5E00 4E00 0700 3E00 6800 3400 2500 0400'
|
||||
dc h'6A00 2700 0B00 2000 4400 1E00 5F00 5800'
|
||||
dc h'6400 5500 5700 0E00 2600 5000 1E00 0000'
|
||||
dc h'3D00 4F00 1C00 2600 3000 2200 4800 4900'
|
||||
dc h'4C00 5600 4300 4400 1100 1200 2100 2400'
|
||||
dc h'2B00 2700 2600 2E00 7A00 7B00 7E00 7C00'
|
||||
dc h'2E00 1700 2700 1600 1500 0E00 1E00 4600'
|
||||
dc h'0100 0600 0500 6400 0800 0900 2800 2A00'
|
||||
dc h'0B00 2D00 4A00 4900 3F00 4600 1F00 4700'
|
||||
dc h'5400 2C00 1A00 0900 1C00 4000 5500 2B00'
|
||||
dc h'0700 2200 1D00 3100 2300 2100 2D00 5200'
|
||||
dc h'3700 1600 7100 5100 1D00 5D00 2800 1A00'
|
||||
dc h'4200 4C00 5C00 5D00 4700 3C00 4500 3200'
|
||||
dc h'2A00 6000 3B00 5A00 1700 1600 6000 3000'
|
||||
dc h'5200 3D00 1800 1900 5F00 3200 5000 0B00'
|
||||
dc h'3600 3000 3B00 2200 3600 2900 4000 4900'
|
||||
dc h'3500 5C00 3900 2000 3E00 3700 5700 3100'
|
||||
dc h'2400 3100 0500 5B00 4C00 1000 4300 2C00'
|
||||
dc h'4B00 2F00 2F00 7900 2800 1F00 4B00 2700'
|
||||
dc h'3400 4A00 4F00 3C00 6A00 0A00 1500 8B00'
|
||||
dc h'7300 1600 7D00 2200 3800 6700 5E00 1500'
|
||||
dc h'4200 6F00 2100 3900 4800 5100 3600 1900'
|
||||
dc h'1400 1300 5D00 1000 0200 0600 5300 4F00'
|
||||
dc h'0F00 0B00 4400 2D00 5200 3A00 4700 1800'
|
||||
dc h'8500 1900 4600 2E00 5900 3A00 6300 4D00'
|
||||
dc h'3500 4100 2A00 7100 7700 3300 2C00 3200'
|
||||
dc h'1B00 1C00 5700 6B00 2300 1A00 6900 6E00'
|
||||
dc h'4200 2F00 1700 2100 1D00 1E00 6F00 6800'
|
||||
dc h'3200 3600 2F00 3A00 3900 5A00 3D00 6500'
|
||||
dc h'1400 6C00 5B00 3400 3A00 5800 6E00 1300'
|
||||
dc h'0F00 0A00 2E00 3800 3800 5400 0600 0300'
|
||||
dc h'0500 0A00 2800 6600 0100 0800 0200 1200'
|
||||
dc h'2B00 1900 2400 2000 0D00 5600 2300 5300'
|
||||
dc h'1D00 4A00 5500 0800 2900 5100 1B00 4800'
|
||||
dc h'1B00 1F00 1800 1100 3F00 4E00 4D00 3C00'
|
||||
dc h'5600 4E00 8100 8000 8600 7F00 8700 8200'
|
||||
dc h'8900 8800 8D00 8A00 8C00 8F00 0300 0400'
|
||||
dc h'0100 0600 8400 8300 0800 0000 0900 0200'
|
||||
dc h'0E00 1000 6B00 8E00 5E00 6300 5C00 6700'
|
||||
dc h'5300 6D00 0D00 1A00 1200 0A00 1400 0C00'
|
||||
dc h'0700 0900 7800 7600 2000 2500 4300 4500'
|
||||
dc h'4E00 3B00 3300 2300 3F00 4500 1700 0000'
|
||||
dc h'1100 7000 3300 5F00 6100 4D00 4000 5600'
|
||||
dc h'2500 4100 4B00 5B00 1B00 1300 2600 3E00'
|
||||
dc h'5000 3700 0F00 2500 2900 4100 4200 3C00'
|
||||
dc h'3000 3500 0C00 0700 6C00 6600 7200 7500'
|
||||
dc h'1500 1300 3900 3300 4000 3700 2C00 2900'
|
||||
dc h'3D00 4100 3100 3E00 0D00 0500 6D00 6500'
|
||||
dc h'7000 7400 1400 1800 3B00 3400 3F00 3800'
|
||||
dc h'2D00 2A00 6200 5900 0C00 0D00 0100 0400'
|
||||
dc h'0000 0300'
|
||||
|
||||
xrickBank ANOP
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank01,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank02,xrickBank01,xrickBank02,xrickBank01,xrickBank01,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank00,xrickBank01,xrickBank02,xrickBank02,xrickBank02,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank02,xrickBank02,xrickBank01,xrickBank02,xrickBank01,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank02,xrickBank02,xrickBank01,xrickBank01,xrickBank01,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank00,xrickBank01,xrickBank02,xrickBank01,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank03,xrickBank03,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank00,xrickBank01,xrickBank00,xrickBank02,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank02,xrickBank02,xrickBank01,xrickBank01,xrickBank01,xrickBank01'
|
||||
dc a'xrickBank00,xrickBank01,xrickBank01,xrickBank01,xrickBank01,xrickBank01,xrickBank00,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank02,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank02,xrickBank01,xrickBank01,xrickBank02,xrickBank01,xrickBank01,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank01,xrickBank00,xrickBank00,xrickBank00,xrickBank01,xrickBank02,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank00,xrickBank02,xrickBank00,xrickBank01,xrickBank01,xrickBank01,xrickBank02'
|
||||
dc a'xrickBank00,xrickBank02,xrickBank01,xrickBank01,xrickBank01,xrickBank02,xrickBank00,xrickBank01'
|
||||
dc a'xrickBank00,xrickBank01,xrickBank01,xrickBank02,xrickBank01,xrickBank02,xrickBank02,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank02,xrickBank02,xrickBank01,xrickBank02,xrickBank01,xrickBank01'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank01,xrickBank00,xrickBank00,xrickBank01,xrickBank01,xrickBank02'
|
||||
dc a'xrickBank01,xrickBank02,xrickBank00,xrickBank02,xrickBank03,xrickBank03,xrickBank02,xrickBank01'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank02,xrickBank03,xrickBank01,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank03,xrickBank02,xrickBank03,xrickBank01,xrickBank01,xrickBank00,xrickBank02'
|
||||
dc a'xrickBank00,xrickBank01,xrickBank01,xrickBank00,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank02,xrickBank00,xrickBank00,xrickBank00,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank00,xrickBank01,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank03,xrickBank02,xrickBank02,xrickBank00,xrickBank01,xrickBank01,xrickBank00'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank02,xrickBank01,xrickBank03,xrickBank03,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank03,xrickBank02,xrickBank03,xrickBank03,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank01,xrickBank01,xrickBank00,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank01,xrickBank01,xrickBank00,xrickBank01,xrickBank01,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank01,xrickBank00,xrickBank02,xrickBank01,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank02,xrickBank01,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank01,xrickBank01,xrickBank01,xrickBank00'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank01,xrickBank01,xrickBank01,xrickBank00,xrickBank01,xrickBank01'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank02,xrickBank02,xrickBank03,xrickBank03,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank02,xrickBank02,xrickBank03,xrickBank03,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank00,xrickBank00,xrickBank00,xrickBank02,xrickBank00,xrickBank01,xrickBank02,xrickBank01'
|
||||
dc a'xrickBank01,xrickBank01,xrickBank01,xrickBank00,xrickBank01,xrickBank01,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank00,xrickBank01,xrickBank00,xrickBank02,xrickBank02,xrickBank00,xrickBank01,xrickBank00'
|
||||
dc a'xrickBank02,xrickBank00,xrickBank00,xrickBank02,xrickBank00,xrickBank02,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank02,xrickBank02,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank02,xrickBank02'
|
||||
dc a'xrickBank02,xrickBank02,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03,xrickBank03'
|
||||
dc a'xrickBank03,xrickBank03,xrickBank02,xrickBank02,xrickBank02,xrickBank02,xrickBank00,xrickBank00'
|
||||
dc a'xrickBank00,xrickBank00'
|
||||
|
||||
xrickBank00 entry
|
||||
JSL $AA0000
|
||||
PLB
|
||||
RTL
|
||||
|
||||
xrickBank01 entry
|
||||
JSL $AA0000
|
||||
PLB
|
||||
RTL
|
||||
|
||||
xrickBank02 entry
|
||||
JSL $AA0000
|
||||
PLB
|
||||
RTL
|
||||
|
||||
xrickBank03 entry
|
||||
JSL $AA0000
|
||||
PLB
|
||||
RTL
|
||||
*------------------------------------------------
|
||||
|
||||
|
||||
*-------------------------------------------------------------------------------
|
||||
*
|
||||
*void SetSpriteBanks(short b0, short b1, short b2, short b3);
|
||||
*
|
||||
SetSpriteBanks entry
|
||||
|
||||
iBank0 equ 4
|
||||
iBank1 equ 6
|
||||
iBank2 equ 8
|
||||
iBank3 equ 10
|
||||
|
||||
sep #$30
|
||||
|
||||
lda iBank0,s
|
||||
sta >xrickBank00+3
|
||||
|
||||
lda iBank1,s
|
||||
sta >xrickBank01+3
|
||||
|
||||
lda iBank2,s
|
||||
sta >xrickBank02+3
|
||||
|
||||
lda iBank3,s
|
||||
sta >xrickBank03+3
|
||||
|
||||
rep #$30
|
||||
|
||||
lda 2,s
|
||||
sta iBank3,s
|
||||
lda 1,s
|
||||
sta iBank3-1,s
|
||||
|
||||
tsc
|
||||
sec
|
||||
sbc #-8
|
||||
tcs
|
||||
|
||||
rtl
|
||||
|
||||
*-------------------------------------------------------------------------------
|
||||
end
|
||||
|
@ -181,6 +181,7 @@ extern volatile unsigned long* tick;
|
||||
// GS Rendering Stuff
|
||||
extern void SetTileBank(short bank);
|
||||
extern void DrawTile(int offset, int tileNo);
|
||||
extern void SetSpriteBanks(short b0, short b1, short b2, short b3);
|
||||
|
||||
// ADB Support Code
|
||||
extern char KeyArray[128];
|
||||
|
53
src/sysvid.c
53
src/sysvid.c
@ -12,6 +12,7 @@
|
||||
*/
|
||||
|
||||
#ifdef IIGS
|
||||
segment "system";
|
||||
#pragma noroot
|
||||
#endif
|
||||
|
||||
@ -39,8 +40,6 @@
|
||||
#include <memory.h> /* memset */
|
||||
#endif
|
||||
|
||||
segment "system";
|
||||
|
||||
U8 *sysvid_fb; /* frame buffer */
|
||||
rect_t SCREENRECT = {0, 0, SYSVID_WIDTH, SYSVID_HEIGHT, NULL}; /* whole fb */
|
||||
|
||||
@ -218,6 +217,53 @@ taskHeader_t dummyTask = {
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef IIGS
|
||||
extern U8 xrickspr_00;
|
||||
extern U8 xrickspr_01;
|
||||
extern U8 xrickspr_02;
|
||||
extern U8 xrickspr_03;
|
||||
|
||||
U8* compressedSprites[] =
|
||||
{
|
||||
&xrickspr_00,
|
||||
&xrickspr_01,
|
||||
&xrickspr_02,
|
||||
&xrickspr_03
|
||||
};
|
||||
|
||||
void PrepareSprites()
|
||||
{
|
||||
int idx;
|
||||
U32* handles[4];
|
||||
|
||||
for (idx = 0; idx < 4; ++idx)
|
||||
{
|
||||
printf("Alloc Sprites %d\n",idx);
|
||||
handles[idx] = (U32*)NewHandle(0x10000, userid(), 0xC014, 0);
|
||||
if (toolerror())
|
||||
{
|
||||
printf("Unable to allocate 64k Sprites Bank %d\n", idx);
|
||||
printf("Game can't run\n");
|
||||
sys_sleep(5000); // Wait 5 seconds
|
||||
exit(1);
|
||||
}
|
||||
printf("SUCCESS\n");
|
||||
}
|
||||
|
||||
for (idx = 0; idx < 4; ++idx)
|
||||
{
|
||||
printf("Decompress Sprites %d\n", idx);
|
||||
LZ4_Unpack((char*)*handles[idx], compressedSprites[idx]);
|
||||
}
|
||||
|
||||
SetSpriteBanks( (*handles[0])>>16,
|
||||
(*handles[1])>>16,
|
||||
(*handles[2])>>16,
|
||||
(*handles[3])>>16 );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Initialise video
|
||||
*/
|
||||
@ -293,8 +339,11 @@ sysvid_init(void)
|
||||
printf("SUCCESS\n");
|
||||
SetTileBank((*tilesPageHandle)>>16);
|
||||
|
||||
printf("Decompressing Tiles\n");
|
||||
LZ4_Unpack((char*)*tilesPageHandle, &tiles_lz4);
|
||||
|
||||
PrepareSprites();
|
||||
|
||||
printf("MiscTool Startup\n");
|
||||
MTStartUp(); // MiscTool Startup, for the Heartbeat
|
||||
if (toolerror())
|
||||
|
Loading…
x
Reference in New Issue
Block a user