import: add compiled in tile data, patch in a way to call it
This commit is contained in:
parent
05c91aba6b
commit
5ecc2034c8
|
@ -0,0 +1,65 @@
|
|||
*
|
||||
* ORCA/M Format!!
|
||||
* Thunk from C to compiled draw things
|
||||
*
|
||||
case on
|
||||
longa on
|
||||
longi on
|
||||
|
||||
Dummy3 start ASMCODE
|
||||
end
|
||||
|
||||
*
|
||||
* void DrawTile(short offset, short tileNo)
|
||||
*
|
||||
|
||||
DrawTile start ASMCODE
|
||||
|
||||
iOffset equ 5
|
||||
iTileNo equ 7
|
||||
|
||||
phb
|
||||
|
||||
lda iOffset,s
|
||||
tay
|
||||
lda iTileNo,s
|
||||
asl A
|
||||
tax ; jmp table offset in x
|
||||
|
||||
anop ; adjust the stack
|
||||
anop ; Copy the Return address
|
||||
lda 1,s
|
||||
sta iTileNo-2,s
|
||||
lda 3,s
|
||||
sta iTileNo,s
|
||||
pla
|
||||
|
||||
lda #$0101
|
||||
sta 1,s
|
||||
plb
|
||||
plb
|
||||
TILEBANK gequ *
|
||||
jsl >$880000
|
||||
|
||||
plb
|
||||
rtl
|
||||
|
||||
*-------------------------------------------------------------------------------
|
||||
end
|
||||
|
||||
SetTileBank start ASMCODE
|
||||
|
||||
iBank equ 4
|
||||
sep #$30
|
||||
lda iBank,s
|
||||
sta >TILEBANK+3
|
||||
rep #$30
|
||||
lda 2,s
|
||||
sta iBank,s
|
||||
lda 1,s
|
||||
sta iBank-1,s
|
||||
pla
|
||||
rtl
|
||||
|
||||
*-------------------------------------------------------------------------------
|
||||
end
|
3
data.bat
3
data.bat
|
@ -42,10 +42,13 @@ rem
|
|||
iix mkobj splash_lz4 data:splash.lz4 data:splash.a
|
||||
iix mkobj img_splash_lz4 data:img_splash16.lz4 data:img_splash.a
|
||||
iix mkobj pic_haf_lz4 data:pic_haf.lz4 data:pic_haf.a
|
||||
iix mkobj tiles_lz4 data:tiles.lz4 data:tiles.a
|
||||
rem
|
||||
rem Create Static Linked Binary data library
|
||||
rem
|
||||
iix makelib -P data.lib +data\splash.a
|
||||
iix makelib -P data.lib +data\img_splash.a
|
||||
iix makelib -P data.lib +data\pic_haf.a
|
||||
iix makelib -P data.lib +data\tiles.a
|
||||
|
||||
|
||||
|
|
Binary file not shown.
|
@ -88,7 +88,11 @@ extern void sys_sleep(int);
|
|||
*/
|
||||
#define SYSVID_ZOOM 2
|
||||
#define SYSVID_MAXZOOM 4
|
||||
#ifdef GS
|
||||
#define SYSVID_WIDTH 160
|
||||
#else
|
||||
#define SYSVID_WIDTH 320
|
||||
#endif
|
||||
#define SYSVID_HEIGHT 200
|
||||
|
||||
extern void sysvid_init(void);
|
||||
|
@ -174,6 +178,10 @@ extern void sysjoy_shutdown(void);
|
|||
extern int LZ4_Unpack(char* pDest, char* pPackedSource);
|
||||
extern volatile unsigned long* tick;
|
||||
|
||||
// GS Rendering Stuff
|
||||
extern void SetTileBank(short bank);
|
||||
extern void DrawTile(short offset, short tileNo);
|
||||
|
||||
// ADB Support Code
|
||||
extern char KeyArray[128];
|
||||
extern void RemoveKeyboardDriver();
|
||||
|
|
17
src/draw.c
17
src/draw.c
|
@ -111,8 +111,8 @@ static U8 *fb; /* frame buffer pointer */
|
|||
void
|
||||
draw_setfb(U16 x, U16 y)
|
||||
{
|
||||
#ifdef IIGS
|
||||
fb = sysvid_fb + x + y * (SYSVID_WIDTH/2);
|
||||
#ifdef GSGFX
|
||||
fb = sysvid_fb + (x>>1) + (y * SYSVID_WIDTH);
|
||||
#else
|
||||
fb = sysvid_fb + x + y * SYSVID_WIDTH;
|
||||
#endif
|
||||
|
@ -237,6 +237,15 @@ draw_tilesSubList()
|
|||
void
|
||||
draw_tile(U8 tileNumber)
|
||||
{
|
||||
#ifdef GFXGS
|
||||
//$$JGA TODO convert to ASM
|
||||
|
||||
int tileNo = (draw_tilesBank*256)+tileNumber;
|
||||
|
||||
DrawTile((short)fb,tileNo);
|
||||
|
||||
fb += 4; /* next tile */
|
||||
#else
|
||||
U8 i, k, *f;
|
||||
|
||||
#ifdef GFXPC
|
||||
|
@ -274,10 +283,6 @@ draw_tile(U8 tileNumber)
|
|||
|
||||
}
|
||||
|
||||
#ifdef GFXGS
|
||||
// fix crash I hope
|
||||
fb += 4; /* next tile */
|
||||
#else
|
||||
fb += 8; /* next tile */
|
||||
#endif
|
||||
}
|
||||
|
|
19
src/sysvid.c
19
src/sysvid.c
|
@ -52,6 +52,7 @@ static SDL_Surface *screen;
|
|||
#ifdef IIGS
|
||||
volatile char *VIDEO_REGISTER = (char*)0xC029;
|
||||
volatile char *SHADOW_REGISTER = (char*)0xC035;
|
||||
extern U8 tiles_lz4;
|
||||
#endif
|
||||
|
||||
static U32 videoFlags;
|
||||
|
@ -225,7 +226,8 @@ sysvid_init(void)
|
|||
{
|
||||
#ifdef IIGS
|
||||
handle hndl; // "generic memory handle"
|
||||
void *directPageHandle;
|
||||
void* directPageHandle;
|
||||
void* tilesPageHandle;
|
||||
|
||||
// PushLong #0 ;/* Ask Shadowing Screen ($8000 bytes from $01/2000)*/
|
||||
// PushLong #$8000
|
||||
|
@ -279,10 +281,23 @@ sysvid_init(void)
|
|||
printf("SUCCESS\n");
|
||||
|
||||
//BlitFieldHndl = NewHandle(0x10000, userid(), 0xC014, 0);
|
||||
printf("Allocate Bank for 8x8 Tiles\n");
|
||||
tilesPageHandle = NewHandle(0x10000, userid(), 0xC014, 0);
|
||||
if (toolerror())
|
||||
{
|
||||
printf("Unable to allocate 64k Tiles Bank\n");
|
||||
printf("Game can't run\n");
|
||||
sys_sleep(5000); // Wait 5 seconds
|
||||
exit(1);
|
||||
}
|
||||
printf("SUCCESS\n");
|
||||
SetTileBank(((U8*)*tilesPageHandle)[2]);
|
||||
LZ4_Unpack((char*)*tilesPageHandle, &tiles_lz4);
|
||||
|
||||
sysvid_fb = (U8*)0x12000;
|
||||
|
||||
// SHR ON
|
||||
*VIDEO_REGISTER|=0xC0;
|
||||
//*VIDEO_REGISTER|=0xC0;
|
||||
|
||||
// ENABLE Shadowing of SHR
|
||||
*SHADOW_REGISTER&=~0x08; // Shadow Enable
|
||||
|
|
Loading…
Reference in New Issue