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 splash_lz4 data:splash.lz4 data:splash.a
|
||||||
iix mkobj img_splash_lz4 data:img_splash16.lz4 data:img_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 pic_haf_lz4 data:pic_haf.lz4 data:pic_haf.a
|
||||||
|
iix mkobj tiles_lz4 data:tiles.lz4 data:tiles.a
|
||||||
rem
|
rem
|
||||||
rem Create Static Linked Binary data library
|
rem Create Static Linked Binary data library
|
||||||
rem
|
rem
|
||||||
iix makelib -P data.lib +data\splash.a
|
iix makelib -P data.lib +data\splash.a
|
||||||
iix makelib -P data.lib +data\img_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\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_ZOOM 2
|
||||||
#define SYSVID_MAXZOOM 4
|
#define SYSVID_MAXZOOM 4
|
||||||
|
#ifdef GS
|
||||||
|
#define SYSVID_WIDTH 160
|
||||||
|
#else
|
||||||
#define SYSVID_WIDTH 320
|
#define SYSVID_WIDTH 320
|
||||||
|
#endif
|
||||||
#define SYSVID_HEIGHT 200
|
#define SYSVID_HEIGHT 200
|
||||||
|
|
||||||
extern void sysvid_init(void);
|
extern void sysvid_init(void);
|
||||||
|
@ -174,6 +178,10 @@ extern void sysjoy_shutdown(void);
|
||||||
extern int LZ4_Unpack(char* pDest, char* pPackedSource);
|
extern int LZ4_Unpack(char* pDest, char* pPackedSource);
|
||||||
extern volatile unsigned long* tick;
|
extern volatile unsigned long* tick;
|
||||||
|
|
||||||
|
// GS Rendering Stuff
|
||||||
|
extern void SetTileBank(short bank);
|
||||||
|
extern void DrawTile(short offset, short tileNo);
|
||||||
|
|
||||||
// ADB Support Code
|
// ADB Support Code
|
||||||
extern char KeyArray[128];
|
extern char KeyArray[128];
|
||||||
extern void RemoveKeyboardDriver();
|
extern void RemoveKeyboardDriver();
|
||||||
|
|
17
src/draw.c
17
src/draw.c
|
@ -111,8 +111,8 @@ static U8 *fb; /* frame buffer pointer */
|
||||||
void
|
void
|
||||||
draw_setfb(U16 x, U16 y)
|
draw_setfb(U16 x, U16 y)
|
||||||
{
|
{
|
||||||
#ifdef IIGS
|
#ifdef GSGFX
|
||||||
fb = sysvid_fb + x + y * (SYSVID_WIDTH/2);
|
fb = sysvid_fb + (x>>1) + (y * SYSVID_WIDTH);
|
||||||
#else
|
#else
|
||||||
fb = sysvid_fb + x + y * SYSVID_WIDTH;
|
fb = sysvid_fb + x + y * SYSVID_WIDTH;
|
||||||
#endif
|
#endif
|
||||||
|
@ -237,6 +237,15 @@ draw_tilesSubList()
|
||||||
void
|
void
|
||||||
draw_tile(U8 tileNumber)
|
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;
|
U8 i, k, *f;
|
||||||
|
|
||||||
#ifdef GFXPC
|
#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 */
|
fb += 8; /* next tile */
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
19
src/sysvid.c
19
src/sysvid.c
|
@ -52,6 +52,7 @@ static SDL_Surface *screen;
|
||||||
#ifdef IIGS
|
#ifdef IIGS
|
||||||
volatile char *VIDEO_REGISTER = (char*)0xC029;
|
volatile char *VIDEO_REGISTER = (char*)0xC029;
|
||||||
volatile char *SHADOW_REGISTER = (char*)0xC035;
|
volatile char *SHADOW_REGISTER = (char*)0xC035;
|
||||||
|
extern U8 tiles_lz4;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static U32 videoFlags;
|
static U32 videoFlags;
|
||||||
|
@ -225,7 +226,8 @@ sysvid_init(void)
|
||||||
{
|
{
|
||||||
#ifdef IIGS
|
#ifdef IIGS
|
||||||
handle hndl; // "generic memory handle"
|
handle hndl; // "generic memory handle"
|
||||||
void *directPageHandle;
|
void* directPageHandle;
|
||||||
|
void* tilesPageHandle;
|
||||||
|
|
||||||
// PushLong #0 ;/* Ask Shadowing Screen ($8000 bytes from $01/2000)*/
|
// PushLong #0 ;/* Ask Shadowing Screen ($8000 bytes from $01/2000)*/
|
||||||
// PushLong #$8000
|
// PushLong #$8000
|
||||||
|
@ -279,10 +281,23 @@ sysvid_init(void)
|
||||||
printf("SUCCESS\n");
|
printf("SUCCESS\n");
|
||||||
|
|
||||||
//BlitFieldHndl = NewHandle(0x10000, userid(), 0xC014, 0);
|
//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;
|
sysvid_fb = (U8*)0x12000;
|
||||||
|
|
||||||
// SHR ON
|
// SHR ON
|
||||||
*VIDEO_REGISTER|=0xC0;
|
//*VIDEO_REGISTER|=0xC0;
|
||||||
|
|
||||||
// ENABLE Shadowing of SHR
|
// ENABLE Shadowing of SHR
|
||||||
*SHADOW_REGISTER&=~0x08; // Shadow Enable
|
*SHADOW_REGISTER&=~0x08; // Shadow Enable
|
||||||
|
|
Loading…
Reference in New Issue