mirror of
https://github.com/dborth/vbagx.git
synced 2025-01-27 09:45:27 +01:00
fix L-R buttons, new menu bg, makefile tweak
This commit is contained in:
parent
bf230dce6c
commit
c3ad79eb38
@ -25,10 +25,9 @@ INCLUDES := source/vba source/vba/gb source/ngc
|
|||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
CFLAGS = -g -Os -Wall $(MACHDEP) $(INCLUDE) \
|
CFLAGS = -g -Os -Wall $(MACHDEP) $(INCLUDE) -maltivec \
|
||||||
-DNGC -DWORDS_BIGENDIAN -DPACKAGE=\"VisualBoyAdvance\" \
|
-DNGC -DWORDS_BIGENDIAN -DC_CORE \
|
||||||
-DVERSION=\"1.7.2\" -DC_CORE \
|
-DCHANFFS -DSDL -DHAVE_ZUTIL_H
|
||||||
-DCHANFFS -DSDL -DNO_DEFLATE
|
|
||||||
CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS)
|
CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS)
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
||||||
|
|
||||||
|
@ -25,10 +25,9 @@ INCLUDES := source/vba source/vba/gb source/ngc
|
|||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
CFLAGS = -g -Os -Wall $(MACHDEP) $(INCLUDE) \
|
CFLAGS = -g -Os -Wall $(MACHDEP) $(INCLUDE) -maltivec \
|
||||||
-DNGC -DWORDS_BIGENDIAN -DPACKAGE=\"VisualBoyAdvance\" \
|
-DNGC -DWORDS_BIGENDIAN -DC_CORE \
|
||||||
-DVERSION=\"1.7.2\" -DC_CORE \
|
-DCHANFFS -DSDL -DHAVE_ZUTIL_H
|
||||||
-DCHANFFS -DSDL -DNO_DEFLATE
|
|
||||||
CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS)
|
CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS)
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#define SAVEBUFFERSIZE ((512 * 1024) + 2048 + 64 + 4 + 4)
|
#define SAVEBUFFERSIZE ((512 * 1024) + 2048 + 64 + 4 + 4)
|
||||||
#define MAXJOLIET 255
|
#define MAXJOLIET 255
|
||||||
#define MAXDISPLAY 54
|
#define MAXDISPLAY 44
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
19212
source/ngc/images/bg.h
Normal file
19212
source/ngc/images/bg.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -194,7 +194,7 @@ u32 DecodeJoy(unsigned short pad)
|
|||||||
signed char pad_x = PAD_StickX (pad);
|
signed char pad_x = PAD_StickX (pad);
|
||||||
signed char pad_y = PAD_StickY (pad);
|
signed char pad_y = PAD_StickY (pad);
|
||||||
u32 jp = PAD_ButtonsHeld (pad);
|
u32 jp = PAD_ButtonsHeld (pad);
|
||||||
unsigned char J = 0;
|
u32 J = 0;
|
||||||
|
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
signed char wm_ax = 0;
|
signed char wm_ax = 0;
|
||||||
@ -298,12 +298,16 @@ u32 DecodeJoy(unsigned short pad)
|
|||||||
J |= vbapadmap[i];
|
J |= vbapadmap[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((J & 48) == 48)
|
||||||
|
J &= ~16;
|
||||||
|
if ((J & 192) == 192)
|
||||||
|
J &= ~128;
|
||||||
|
|
||||||
return J;
|
return J;
|
||||||
}
|
}
|
||||||
u32 GetJoy()
|
u32 GetJoy()
|
||||||
{
|
{
|
||||||
int pad = 0;
|
int pad = 0;
|
||||||
u32 res = 0;
|
|
||||||
|
|
||||||
s8 gc_px = PAD_SubStickX (0);
|
s8 gc_px = PAD_SubStickX (0);
|
||||||
|
|
||||||
@ -339,12 +343,6 @@ u32 GetJoy()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
res = DecodeJoy(pad);
|
return DecodeJoy(pad);
|
||||||
if ((res & 48) == 48)
|
|
||||||
res &= ~16;
|
|
||||||
if ((res & 192) == 192)
|
|
||||||
res &= ~128;
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,6 +205,17 @@ setfontcolour (u8 r, u8 g, u8 b)
|
|||||||
fontlo = fontcolour & 0xffff;
|
fontlo = fontcolour & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Draws Version # on screen
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
void DrawVersion()
|
||||||
|
{
|
||||||
|
setfontsize (12);
|
||||||
|
setfontcolour (0,0,0);
|
||||||
|
DrawText (115, screenheight - 34, (char *)VERSIONSTRFULL);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Display credits, legal copyright and licence
|
* Display credits, legal copyright and licence
|
||||||
*
|
*
|
||||||
@ -217,10 +228,10 @@ Credits ()
|
|||||||
|
|
||||||
setfontcolour (0x00, 0x00, 0x00);
|
setfontcolour (0x00, 0x00, 0x00);
|
||||||
|
|
||||||
setfontsize (28);
|
setfontsize (26);
|
||||||
DrawText (-1, 60, (char*)"Credits");
|
DrawText (-1, 150, (char*)"Credits");
|
||||||
|
|
||||||
int ypos = 25;
|
int ypos = 120;
|
||||||
|
|
||||||
if (screenheight == 480)
|
if (screenheight == 480)
|
||||||
ypos += 52;
|
ypos += 52;
|
||||||
@ -245,9 +256,11 @@ Credits ()
|
|||||||
DrawText (-1, ypos += 36, (char*)"And many others who have contributed over the years!");
|
DrawText (-1, ypos += 36, (char*)"And many others who have contributed over the years!");
|
||||||
|
|
||||||
setfontsize (12);
|
setfontsize (12);
|
||||||
DrawText (-1, ypos += 50, (char*)"This software is open source and may be copied, distributed, or modified");
|
DrawText (-1, ypos += 50, (char*)"This software is open source and may be copied,");
|
||||||
DrawText (-1, ypos += 15, (char*)"under the terms of the GNU General Public License (GPL) Version 2.");
|
DrawText (-1, ypos += 15, (char*)"distributed, or modified under the terms of");
|
||||||
|
DrawText (-1, ypos += 15, (char*)"the GNU General Public License (GPL) Version 2.");
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,9 +366,12 @@ WaitPrompt (char *msg)
|
|||||||
ypos += 32;
|
ypos += 32;
|
||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
|
setfontsize(20);
|
||||||
DrawText (-1, ypos, msg);
|
DrawText (-1, ypos, msg);
|
||||||
ypos += 30;
|
ypos += 30;
|
||||||
DrawText (-1, ypos, (char*)"Press A to continue");
|
DrawText (-1, ypos, (char*)"Press A to continue");
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
WaitButtonA ();
|
WaitButtonA ();
|
||||||
}
|
}
|
||||||
@ -375,11 +391,14 @@ WaitPromptChoice (char *msg, char *bmsg, char *amsg)
|
|||||||
ypos += 17;
|
ypos += 17;
|
||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
|
setfontsize(20);
|
||||||
DrawText (-1, ypos, msg);
|
DrawText (-1, ypos, msg);
|
||||||
ypos += 60;
|
ypos += 60;
|
||||||
char txt[80];
|
char txt[80];
|
||||||
sprintf (txt, "B = %s : A = %s", bmsg, amsg);
|
sprintf (txt, "B = %s : A = %s", bmsg, amsg);
|
||||||
DrawText (-1, ypos, txt);
|
DrawText (-1, ypos, txt);
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
return WaitButtonAB ();
|
return WaitButtonAB ();
|
||||||
}
|
}
|
||||||
@ -398,7 +417,10 @@ ShowAction (char *msg)
|
|||||||
ypos += 32;
|
ypos += 32;
|
||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
|
setfontsize(20);
|
||||||
DrawText (-1, ypos, msg);
|
DrawText (-1, ypos, msg);
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -413,7 +435,7 @@ DrawMenu (char items[][50], char *title, int maxitems, int selected, int fontsiz
|
|||||||
int n = 1;
|
int n = 1;
|
||||||
int line_height;
|
int line_height;
|
||||||
|
|
||||||
ypos = 45;
|
ypos = 105;
|
||||||
|
|
||||||
if (screenheight == 480)
|
if (screenheight == 480)
|
||||||
ypos += 52;
|
ypos += 52;
|
||||||
@ -426,13 +448,10 @@ DrawMenu (char items[][50], char *title, int maxitems, int selected, int fontsiz
|
|||||||
|
|
||||||
if (title != NULL)
|
if (title != NULL)
|
||||||
{
|
{
|
||||||
setfontsize (28);
|
setfontsize (26);
|
||||||
DrawText (-1, 60, title);
|
DrawText (-1, 150, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
setfontsize (14);
|
|
||||||
DrawText (380, screenheight - 30, (char *)VERSIONSTRFULL);
|
|
||||||
|
|
||||||
// Draw menu items
|
// Draw menu items
|
||||||
|
|
||||||
setfontsize (fontsize); // set font size
|
setfontsize (fontsize); // set font size
|
||||||
@ -448,11 +467,11 @@ DrawMenu (char items[][50], char *title, int maxitems, int selected, int fontsiz
|
|||||||
else if (i == selected)
|
else if (i == selected)
|
||||||
{
|
{
|
||||||
for( w = 0; w < line_height; w++ )
|
for( w = 0; w < line_height; w++ )
|
||||||
DrawLineFast( 30, 610, n * line_height + (ypos-line_height+6) + w, 0x80, 0x80, 0x80 );
|
DrawLineFast( 77, 575, n * line_height + (ypos-line_height+6) + w, 0x00, 0x00, 0x00 );
|
||||||
|
|
||||||
setfontcolour (0xff, 0xff, 0xff);
|
//setfontcolour (0xff, 0xff, 0xff);
|
||||||
DrawText (x, n * line_height + ypos, items[i]);
|
DrawText (x, n * line_height + ypos, items[i]);
|
||||||
setfontcolour (0x00, 0x00, 0x00);
|
//setfontcolour (0x00, 0x00, 0x00);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -462,8 +481,8 @@ DrawMenu (char items[][50], char *title, int maxitems, int selected, int fontsiz
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -584,8 +603,8 @@ ShowFiles (FILEENTRIES filelist[], int maxfiles, int offset, int selection)
|
|||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
|
|
||||||
setfontsize (28);
|
setfontsize (26);
|
||||||
DrawText (-1, 60, (char*)"Choose Game");
|
DrawText (-1, 150, (char*)"Choose Game");
|
||||||
|
|
||||||
setfontsize(18);
|
setfontsize(18);
|
||||||
|
|
||||||
@ -596,6 +615,8 @@ ShowFiles (FILEENTRIES filelist[], int maxfiles, int offset, int selection)
|
|||||||
else
|
else
|
||||||
ypos += 10;
|
ypos += 10;
|
||||||
|
|
||||||
|
ypos += 30;
|
||||||
|
|
||||||
j = 0;
|
j = 0;
|
||||||
for (i = offset; i < (offset + PAGESIZE) && (i < maxfiles); i++)
|
for (i = offset; i < (offset + PAGESIZE) && (i < maxfiles); i++)
|
||||||
{
|
{
|
||||||
@ -614,19 +635,18 @@ ShowFiles (FILEENTRIES filelist[], int maxfiles, int offset, int selection)
|
|||||||
{
|
{
|
||||||
/*** Highlighted text entry ***/
|
/*** Highlighted text entry ***/
|
||||||
for ( w = 0; w < 20; w++ )
|
for ( w = 0; w < 20; w++ )
|
||||||
DrawLineFast( 30, 610, ( j * 20 ) + (ypos-16) + w, 0x80, 0x80, 0x80 );
|
DrawLineFast( 77, 575, ( j * 20 ) + (ypos-16) + w, 0x00, 0x00, 0x00 );
|
||||||
|
DrawText (100, (j * 20) + ypos, text);
|
||||||
setfontcolour (0x00, 0x00, 0xe0);
|
|
||||||
DrawText (50, (j * 20) + ypos, text);
|
|
||||||
setfontcolour (0x00, 0x00, 0x00);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*** Normal entry ***/
|
/*** Normal entry ***/
|
||||||
DrawText (50, (j * 20) + ypos, text);
|
DrawText (100, (j * 20) + ypos, text);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -645,8 +665,8 @@ ShowCheats (char items[][50], char itemvalues[][50], int maxitems, int offset, i
|
|||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
|
|
||||||
setfontsize (28);
|
setfontsize (26);
|
||||||
DrawText (-1, 60, (char*)"Cheats");
|
DrawText (-1, 150, (char*)"Cheats");
|
||||||
|
|
||||||
setfontsize(18);
|
setfontsize(18);
|
||||||
|
|
||||||
@ -676,6 +696,8 @@ ShowCheats (char items[][50], char itemvalues[][50], int maxitems, int offset, i
|
|||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -784,6 +806,7 @@ ShowProgress (char *msg, int done, int total)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
|
setfontsize(20);
|
||||||
DrawText (-1, ypos, msg);
|
DrawText (-1, ypos, msg);
|
||||||
|
|
||||||
/*** Draw a white outline box ***/
|
/*** Draw a white outline box ***/
|
||||||
@ -796,6 +819,7 @@ ShowProgress (char *msg, int done, int total)
|
|||||||
for (i = 381; i < 400; i++)
|
for (i = 381; i < 400; i++)
|
||||||
DrawLine (101, i, 101 + xpos, i, 0x00, 0x00, 0x80);
|
DrawLine (101, i, 101 + xpos, i, 0x00, 0x00, 0x80);
|
||||||
|
|
||||||
|
DrawVersion();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include "filesel.h"
|
#include "filesel.h"
|
||||||
|
|
||||||
#define PAGESIZE 17 // max item listing on a screen
|
#define PAGESIZE 13 // max item listing on a screen
|
||||||
|
|
||||||
int FT_Init ();
|
int FT_Init ();
|
||||||
void setfontsize (int pixelsize);
|
void setfontsize (int pixelsize);
|
||||||
|
@ -229,8 +229,13 @@ bool SaveBattery(int method, bool silent)
|
|||||||
result = emulator.emuWriteBattery(filepath);
|
result = emulator.emuWriteBattery(filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!result && !silent)
|
if(!silent)
|
||||||
WaitPrompt ((char*) "Save failed");
|
{
|
||||||
|
if(result)
|
||||||
|
WaitPrompt ((char*) "Save successful");
|
||||||
|
else
|
||||||
|
WaitPrompt ((char*) "Save failed");
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -275,8 +280,13 @@ bool SaveState(int method, bool silent)
|
|||||||
result = emulator.emuWriteState(filepath);
|
result = emulator.emuWriteState(filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!result && !silent)
|
if(!silent)
|
||||||
WaitPrompt ((char*) "Save failed");
|
{
|
||||||
|
if(result)
|
||||||
|
WaitPrompt ((char*) "Save successful");
|
||||||
|
else
|
||||||
|
WaitPrompt ((char*) "Save failed");
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <wiiuse/wpad.h>
|
#include <wiiuse/wpad.h>
|
||||||
|
#include "images/bg.h"
|
||||||
|
|
||||||
/*** External 2D Video ***/
|
/*** External 2D Video ***/
|
||||||
/*** 2D Video Globals ***/
|
/*** 2D Video Globals ***/
|
||||||
@ -313,13 +314,7 @@ clearscreen (int c)
|
|||||||
|
|
||||||
whichfb ^= 1;
|
whichfb ^= 1;
|
||||||
VIDEO_ClearFrameBuffer (vmode, xfb[whichfb], colour);
|
VIDEO_ClearFrameBuffer (vmode, xfb[whichfb], colour);
|
||||||
#ifdef HW_RVL
|
memcpy (xfb[whichfb], &bg, 1280 * 480);
|
||||||
// on wii copy from memory
|
|
||||||
//memcpy ((char *) xfb[whichfb], (char *) backdrop, 640 * screenheight * 2);
|
|
||||||
#else
|
|
||||||
// on gc copy from aram
|
|
||||||
//ARAMFetch ((char *) xfb[whichfb], (char *) AR_BACKDROP, 640 * screenheight * 2);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1,135 +1,135 @@
|
|||||||
// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator.
|
// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator.
|
||||||
// Copyright (C) 1999-2003 Forgotten
|
// Copyright (C) 1999-2003 Forgotten
|
||||||
// Copyright (C) 2004 Forgotten and the VBA development team
|
// Copyright (C) 2004 Forgotten and the VBA development team
|
||||||
|
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation; either version 2, or(at your option)
|
// the Free Software Foundation; either version 2, or(at your option)
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program; if not, write to the Free Software Foundation,
|
// along with this program; if not, write to the Free Software Foundation,
|
||||||
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
#include "GBA.h"
|
#include "GBA.h"
|
||||||
|
|
||||||
reg_pair reg[45];
|
reg_pair reg[45];
|
||||||
memoryMap map[256];
|
memoryMap map[256];
|
||||||
bool ioReadable[0x400];
|
bool ioReadable[0x400];
|
||||||
bool N_FLAG = 0;
|
bool N_FLAG = 0;
|
||||||
bool C_FLAG = 0;
|
bool C_FLAG = 0;
|
||||||
bool Z_FLAG = 0;
|
bool Z_FLAG = 0;
|
||||||
bool V_FLAG = 0;
|
bool V_FLAG = 0;
|
||||||
bool armState = true;
|
bool armState = true;
|
||||||
bool armIrqEnable = true;
|
bool armIrqEnable = true;
|
||||||
u32 armNextPC = 0x00000000;
|
u32 armNextPC = 0x00000000;
|
||||||
int armMode = 0x1f;
|
int armMode = 0x1f;
|
||||||
u32 stop = 0x08000568;
|
u32 stop = 0x08000568;
|
||||||
int saveType = 0;
|
int saveType = 0;
|
||||||
bool useBios = false;
|
bool useBios = false;
|
||||||
bool skipBios = false;
|
bool skipBios = false;
|
||||||
int frameSkip = 1;
|
int frameSkip = 1;
|
||||||
bool speedup = false;
|
bool speedup = false;
|
||||||
bool synchronize = true;
|
bool synchronize = true;
|
||||||
bool cpuDisableSfx = false;
|
bool cpuDisableSfx = false;
|
||||||
bool cpuIsMultiBoot = false;
|
bool cpuIsMultiBoot = false;
|
||||||
bool parseDebug = false;
|
bool parseDebug = true;
|
||||||
int layerSettings = 0xff00;
|
int layerSettings = 0xff00;
|
||||||
int layerEnable = 0xff00;
|
int layerEnable = 0xff00;
|
||||||
bool speedHack = false;
|
bool speedHack = false;
|
||||||
int cpuSaveType = 0;
|
int cpuSaveType = 0;
|
||||||
bool cpuEnhancedDetection = true;
|
bool cpuEnhancedDetection = true;
|
||||||
bool cheatsEnabled = false;
|
bool cheatsEnabled = true;
|
||||||
|
|
||||||
u8 *bios = NULL;
|
u8 *bios = NULL;
|
||||||
u8 *rom = NULL;
|
u8 *rom = NULL;
|
||||||
u8 *internalRAM = NULL;
|
u8 *internalRAM = NULL;
|
||||||
u8 *workRAM = NULL;
|
u8 *workRAM = NULL;
|
||||||
u8 *paletteRAM = NULL;
|
u8 *paletteRAM = NULL;
|
||||||
u8 *vram = NULL;
|
u8 *vram = NULL;
|
||||||
u8 *pix = NULL;
|
u8 *pix = NULL;
|
||||||
u8 *oam = NULL;
|
u8 *oam = NULL;
|
||||||
u8 *ioMem = NULL;
|
u8 *ioMem = NULL;
|
||||||
|
|
||||||
u16 DISPCNT = 0x0080;
|
u16 DISPCNT = 0x0080;
|
||||||
u16 DISPSTAT = 0x0000;
|
u16 DISPSTAT = 0x0000;
|
||||||
u16 VCOUNT = 0x0000;
|
u16 VCOUNT = 0x0000;
|
||||||
u16 BG0CNT = 0x0000;
|
u16 BG0CNT = 0x0000;
|
||||||
u16 BG1CNT = 0x0000;
|
u16 BG1CNT = 0x0000;
|
||||||
u16 BG2CNT = 0x0000;
|
u16 BG2CNT = 0x0000;
|
||||||
u16 BG3CNT = 0x0000;
|
u16 BG3CNT = 0x0000;
|
||||||
u16 BG0HOFS = 0x0000;
|
u16 BG0HOFS = 0x0000;
|
||||||
u16 BG0VOFS = 0x0000;
|
u16 BG0VOFS = 0x0000;
|
||||||
u16 BG1HOFS = 0x0000;
|
u16 BG1HOFS = 0x0000;
|
||||||
u16 BG1VOFS = 0x0000;
|
u16 BG1VOFS = 0x0000;
|
||||||
u16 BG2HOFS = 0x0000;
|
u16 BG2HOFS = 0x0000;
|
||||||
u16 BG2VOFS = 0x0000;
|
u16 BG2VOFS = 0x0000;
|
||||||
u16 BG3HOFS = 0x0000;
|
u16 BG3HOFS = 0x0000;
|
||||||
u16 BG3VOFS = 0x0000;
|
u16 BG3VOFS = 0x0000;
|
||||||
u16 BG2PA = 0x0100;
|
u16 BG2PA = 0x0100;
|
||||||
u16 BG2PB = 0x0000;
|
u16 BG2PB = 0x0000;
|
||||||
u16 BG2PC = 0x0000;
|
u16 BG2PC = 0x0000;
|
||||||
u16 BG2PD = 0x0100;
|
u16 BG2PD = 0x0100;
|
||||||
u16 BG2X_L = 0x0000;
|
u16 BG2X_L = 0x0000;
|
||||||
u16 BG2X_H = 0x0000;
|
u16 BG2X_H = 0x0000;
|
||||||
u16 BG2Y_L = 0x0000;
|
u16 BG2Y_L = 0x0000;
|
||||||
u16 BG2Y_H = 0x0000;
|
u16 BG2Y_H = 0x0000;
|
||||||
u16 BG3PA = 0x0100;
|
u16 BG3PA = 0x0100;
|
||||||
u16 BG3PB = 0x0000;
|
u16 BG3PB = 0x0000;
|
||||||
u16 BG3PC = 0x0000;
|
u16 BG3PC = 0x0000;
|
||||||
u16 BG3PD = 0x0100;
|
u16 BG3PD = 0x0100;
|
||||||
u16 BG3X_L = 0x0000;
|
u16 BG3X_L = 0x0000;
|
||||||
u16 BG3X_H = 0x0000;
|
u16 BG3X_H = 0x0000;
|
||||||
u16 BG3Y_L = 0x0000;
|
u16 BG3Y_L = 0x0000;
|
||||||
u16 BG3Y_H = 0x0000;
|
u16 BG3Y_H = 0x0000;
|
||||||
u16 WIN0H = 0x0000;
|
u16 WIN0H = 0x0000;
|
||||||
u16 WIN1H = 0x0000;
|
u16 WIN1H = 0x0000;
|
||||||
u16 WIN0V = 0x0000;
|
u16 WIN0V = 0x0000;
|
||||||
u16 WIN1V = 0x0000;
|
u16 WIN1V = 0x0000;
|
||||||
u16 WININ = 0x0000;
|
u16 WININ = 0x0000;
|
||||||
u16 WINOUT = 0x0000;
|
u16 WINOUT = 0x0000;
|
||||||
u16 MOSAIC = 0x0000;
|
u16 MOSAIC = 0x0000;
|
||||||
u16 BLDMOD = 0x0000;
|
u16 BLDMOD = 0x0000;
|
||||||
u16 COLEV = 0x0000;
|
u16 COLEV = 0x0000;
|
||||||
u16 COLY = 0x0000;
|
u16 COLY = 0x0000;
|
||||||
u16 DM0SAD_L = 0x0000;
|
u16 DM0SAD_L = 0x0000;
|
||||||
u16 DM0SAD_H = 0x0000;
|
u16 DM0SAD_H = 0x0000;
|
||||||
u16 DM0DAD_L = 0x0000;
|
u16 DM0DAD_L = 0x0000;
|
||||||
u16 DM0DAD_H = 0x0000;
|
u16 DM0DAD_H = 0x0000;
|
||||||
u16 DM0CNT_L = 0x0000;
|
u16 DM0CNT_L = 0x0000;
|
||||||
u16 DM0CNT_H = 0x0000;
|
u16 DM0CNT_H = 0x0000;
|
||||||
u16 DM1SAD_L = 0x0000;
|
u16 DM1SAD_L = 0x0000;
|
||||||
u16 DM1SAD_H = 0x0000;
|
u16 DM1SAD_H = 0x0000;
|
||||||
u16 DM1DAD_L = 0x0000;
|
u16 DM1DAD_L = 0x0000;
|
||||||
u16 DM1DAD_H = 0x0000;
|
u16 DM1DAD_H = 0x0000;
|
||||||
u16 DM1CNT_L = 0x0000;
|
u16 DM1CNT_L = 0x0000;
|
||||||
u16 DM1CNT_H = 0x0000;
|
u16 DM1CNT_H = 0x0000;
|
||||||
u16 DM2SAD_L = 0x0000;
|
u16 DM2SAD_L = 0x0000;
|
||||||
u16 DM2SAD_H = 0x0000;
|
u16 DM2SAD_H = 0x0000;
|
||||||
u16 DM2DAD_L = 0x0000;
|
u16 DM2DAD_L = 0x0000;
|
||||||
u16 DM2DAD_H = 0x0000;
|
u16 DM2DAD_H = 0x0000;
|
||||||
u16 DM2CNT_L = 0x0000;
|
u16 DM2CNT_L = 0x0000;
|
||||||
u16 DM2CNT_H = 0x0000;
|
u16 DM2CNT_H = 0x0000;
|
||||||
u16 DM3SAD_L = 0x0000;
|
u16 DM3SAD_L = 0x0000;
|
||||||
u16 DM3SAD_H = 0x0000;
|
u16 DM3SAD_H = 0x0000;
|
||||||
u16 DM3DAD_L = 0x0000;
|
u16 DM3DAD_L = 0x0000;
|
||||||
u16 DM3DAD_H = 0x0000;
|
u16 DM3DAD_H = 0x0000;
|
||||||
u16 DM3CNT_L = 0x0000;
|
u16 DM3CNT_L = 0x0000;
|
||||||
u16 DM3CNT_H = 0x0000;
|
u16 DM3CNT_H = 0x0000;
|
||||||
u16 TM0D = 0x0000;
|
u16 TM0D = 0x0000;
|
||||||
u16 TM0CNT = 0x0000;
|
u16 TM0CNT = 0x0000;
|
||||||
u16 TM1D = 0x0000;
|
u16 TM1D = 0x0000;
|
||||||
u16 TM1CNT = 0x0000;
|
u16 TM1CNT = 0x0000;
|
||||||
u16 TM2D = 0x0000;
|
u16 TM2D = 0x0000;
|
||||||
u16 TM2CNT = 0x0000;
|
u16 TM2CNT = 0x0000;
|
||||||
u16 TM3D = 0x0000;
|
u16 TM3D = 0x0000;
|
||||||
u16 TM3CNT = 0x0000;
|
u16 TM3CNT = 0x0000;
|
||||||
u16 P1 = 0xFFFF;
|
u16 P1 = 0xFFFF;
|
||||||
u16 IE = 0x0000;
|
u16 IE = 0x0000;
|
||||||
u16 IF = 0x0000;
|
u16 IF = 0x0000;
|
||||||
u16 IME = 0x0000;
|
u16 IME = 0x0000;
|
||||||
|
2391
source/vba/Util.cpp
2391
source/vba/Util.cpp
File diff suppressed because it is too large
Load Diff
@ -10,7 +10,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* @(#) $Id: memgzio.c,v 1.3 2004/01/17 23:07:32 kxu Exp $ */
|
/* @(#) $Id: memgzio.c,v 1.3 2004/01/17 23:07:32 kxu Exp $ */
|
||||||
#include <string.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -70,15 +70,15 @@ typedef struct mem_stream
|
|||||||
mem_stream;
|
mem_stream;
|
||||||
|
|
||||||
|
|
||||||
gzFile gz_open OF((char *memory, const int available, const char *mode));
|
local gzFile gz_open OF((char *memory, const int available, const char *mode));
|
||||||
int do_flush OF((gzFile file, int flush));
|
local int do_flush OF((gzFile file, int flush));
|
||||||
int get_byte OF((mem_stream *s));
|
local int get_byte OF((mem_stream *s));
|
||||||
void check_header OF((mem_stream *s));
|
local void check_header OF((mem_stream *s));
|
||||||
int destroy OF((mem_stream *s));
|
local int destroy OF((mem_stream *s));
|
||||||
void putLong OF((MEMFILE *file, uLong x));
|
local void putLong OF((MEMFILE *file, uLong x));
|
||||||
uLong getLong OF((mem_stream *s));
|
local uLong getLong OF((mem_stream *s));
|
||||||
|
|
||||||
MEMFILE *memOpen(char *memory, int available, char mode)
|
local MEMFILE *memOpen(char *memory, int available, char mode)
|
||||||
{
|
{
|
||||||
MEMFILE *f;
|
MEMFILE *f;
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ MEMFILE *memOpen(char *memory, int available, char mode)
|
|||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t memWrite(const void *buffer, size_t size, size_t count,
|
local size_t memWrite(const void *buffer, size_t size, size_t count,
|
||||||
MEMFILE *file)
|
MEMFILE *file)
|
||||||
{
|
{
|
||||||
size_t total = size*count;
|
size_t total = size*count;
|
||||||
@ -140,7 +140,7 @@ size_t memWrite(const void *buffer, size_t size, size_t count,
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t memRead(void *buffer, size_t size, size_t count,
|
local size_t memRead(void *buffer, size_t size, size_t count,
|
||||||
MEMFILE *file)
|
MEMFILE *file)
|
||||||
{
|
{
|
||||||
size_t total = size*count;
|
size_t total = size*count;
|
||||||
@ -164,7 +164,7 @@ size_t memRead(void *buffer, size_t size, size_t count,
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
int memPutc(int c, MEMFILE *file)
|
local int memPutc(int c, MEMFILE *file)
|
||||||
{
|
{
|
||||||
if(file->mode != 'w')
|
if(file->mode != 'w')
|
||||||
{
|
{
|
||||||
@ -183,17 +183,17 @@ int memPutc(int c, MEMFILE *file)
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
long memTell(MEMFILE *f)
|
local long memTell(MEMFILE *f)
|
||||||
{
|
{
|
||||||
return (f->next - f->memory) - 8;
|
return (f->next - f->memory) - 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
int memError(MEMFILE *f)
|
local int memError(MEMFILE *f)
|
||||||
{
|
{
|
||||||
return f->error;
|
return f->error;
|
||||||
}
|
}
|
||||||
|
|
||||||
int memClose(MEMFILE *f)
|
local int memClose(MEMFILE *f)
|
||||||
{
|
{
|
||||||
if(f->mode == 'w')
|
if(f->mode == 'w')
|
||||||
{
|
{
|
||||||
@ -203,7 +203,7 @@ int memClose(MEMFILE *f)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int memPrintf(MEMFILE *f, const char *format, ...)
|
local int memPrintf(MEMFILE *f, const char *format, ...)
|
||||||
{
|
{
|
||||||
char buffer[80];
|
char buffer[80];
|
||||||
va_list list;
|
va_list list;
|
||||||
@ -225,7 +225,7 @@ int memPrintf(MEMFILE *f, const char *format, ...)
|
|||||||
can be checked to distinguish the two cases (if errno is zero, the
|
can be checked to distinguish the two cases (if errno is zero, the
|
||||||
zlib error is Z_MEM_ERROR).
|
zlib error is Z_MEM_ERROR).
|
||||||
*/
|
*/
|
||||||
gzFile gz_open (memory, available, mode)
|
local gzFile gz_open (memory, available, mode)
|
||||||
char *memory;
|
char *memory;
|
||||||
const int available;
|
const int available;
|
||||||
const char *mode;
|
const char *mode;
|
||||||
@ -313,7 +313,7 @@ const char *mode;
|
|||||||
}
|
}
|
||||||
s->stream.avail_out = Z_BUFSIZE;
|
s->stream.avail_out = Z_BUFSIZE;
|
||||||
|
|
||||||
//errno = 0;
|
errno = 0;
|
||||||
s->file = memOpen(memory, available, s->mode);
|
s->file = memOpen(memory, available, s->mode);
|
||||||
|
|
||||||
if (s->file == NULL)
|
if (s->file == NULL)
|
||||||
@ -325,8 +325,8 @@ const char *mode;
|
|||||||
{
|
{
|
||||||
/* Write a very simple .gz header:
|
/* Write a very simple .gz header:
|
||||||
*/
|
*/
|
||||||
//memPrintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
|
memPrintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
|
||||||
// Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE);
|
Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE);
|
||||||
s->startpos = 10L;
|
s->startpos = 10L;
|
||||||
/* We use 10L instead of ftell(s->file) to because ftell causes an
|
/* We use 10L instead of ftell(s->file) to because ftell causes an
|
||||||
* fflush on some systems. This version of the library doesn't use
|
* fflush on some systems. This version of the library doesn't use
|
||||||
@ -359,13 +359,13 @@ const char *mode;
|
|||||||
for end of file.
|
for end of file.
|
||||||
IN assertion: the stream s has been sucessfully opened for reading.
|
IN assertion: the stream s has been sucessfully opened for reading.
|
||||||
*/
|
*/
|
||||||
int get_byte(s)
|
local int get_byte(s)
|
||||||
mem_stream *s;
|
mem_stream *s;
|
||||||
{
|
{
|
||||||
if (s->z_eof) return EOF;
|
if (s->z_eof) return EOF;
|
||||||
if (s->stream.avail_in == 0)
|
if (s->stream.avail_in == 0)
|
||||||
{
|
{
|
||||||
// errno = 0;
|
errno = 0;
|
||||||
s->stream.avail_in = memRead(s->inbuf, 1, Z_BUFSIZE, s->file);
|
s->stream.avail_in = memRead(s->inbuf, 1, Z_BUFSIZE, s->file);
|
||||||
if (s->stream.avail_in == 0)
|
if (s->stream.avail_in == 0)
|
||||||
{
|
{
|
||||||
@ -388,7 +388,7 @@ mem_stream *s;
|
|||||||
s->stream.avail_in is zero for the first time, but may be non-zero
|
s->stream.avail_in is zero for the first time, but may be non-zero
|
||||||
for concatenated .gz files.
|
for concatenated .gz files.
|
||||||
*/
|
*/
|
||||||
void check_header(s)
|
local void check_header(s)
|
||||||
mem_stream *s;
|
mem_stream *s;
|
||||||
{
|
{
|
||||||
int method; /* method byte */
|
int method; /* method byte */
|
||||||
@ -449,7 +449,7 @@ mem_stream *s;
|
|||||||
* Cleanup then free the given mem_stream. Return a zlib error code.
|
* Cleanup then free the given mem_stream. Return a zlib error code.
|
||||||
Try freeing in the reverse order of allocations.
|
Try freeing in the reverse order of allocations.
|
||||||
*/
|
*/
|
||||||
int destroy (s)
|
local int destroy (s)
|
||||||
mem_stream *s;
|
mem_stream *s;
|
||||||
{
|
{
|
||||||
int err = Z_OK;
|
int err = Z_OK;
|
||||||
@ -520,7 +520,7 @@ unsigned len;
|
|||||||
if (n > s->stream.avail_out) n = s->stream.avail_out;
|
if (n > s->stream.avail_out) n = s->stream.avail_out;
|
||||||
if (n > 0)
|
if (n > 0)
|
||||||
{
|
{
|
||||||
// zmemcpy(s->stream.next_out, s->stream.next_in, n);
|
zmemcpy(s->stream.next_out, s->stream.next_in, n);
|
||||||
next_out += n;
|
next_out += n;
|
||||||
s->stream.next_out = next_out;
|
s->stream.next_out = next_out;
|
||||||
s->stream.next_in += n;
|
s->stream.next_in += n;
|
||||||
@ -541,7 +541,7 @@ unsigned len;
|
|||||||
if (s->stream.avail_in == 0 && !s->z_eof)
|
if (s->stream.avail_in == 0 && !s->z_eof)
|
||||||
{
|
{
|
||||||
|
|
||||||
// errno = 0;
|
errno = 0;
|
||||||
s->stream.avail_in = memRead(s->inbuf, 1, Z_BUFSIZE, s->file);
|
s->stream.avail_in = memRead(s->inbuf, 1, Z_BUFSIZE, s->file);
|
||||||
if (s->stream.avail_in == 0)
|
if (s->stream.avail_in == 0)
|
||||||
{
|
{
|
||||||
@ -637,7 +637,7 @@ unsigned len;
|
|||||||
Flushes all pending output into the compressed file. The parameter
|
Flushes all pending output into the compressed file. The parameter
|
||||||
flush is as in the deflate() function.
|
flush is as in the deflate() function.
|
||||||
*/
|
*/
|
||||||
int do_flush (file, flush)
|
local int do_flush (file, flush)
|
||||||
gzFile file;
|
gzFile file;
|
||||||
int flush;
|
int flush;
|
||||||
{
|
{
|
||||||
@ -682,7 +682,7 @@ int flush;
|
|||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
Outputs a long in LSB order to the given file
|
Outputs a long in LSB order to the given file
|
||||||
*/
|
*/
|
||||||
void putLong (file, x)
|
local void putLong (file, x)
|
||||||
MEMFILE *file;
|
MEMFILE *file;
|
||||||
uLong x;
|
uLong x;
|
||||||
{
|
{
|
||||||
@ -698,7 +698,7 @@ uLong x;
|
|||||||
Reads a long in LSB order from the given mem_stream. Sets z_err in case
|
Reads a long in LSB order from the given mem_stream. Sets z_err in case
|
||||||
of error.
|
of error.
|
||||||
*/
|
*/
|
||||||
uLong getLong (s)
|
local uLong getLong (s)
|
||||||
mem_stream *s;
|
mem_stream *s;
|
||||||
{
|
{
|
||||||
uLong x = (uLong)get_byte(s);
|
uLong x = (uLong)get_byte(s);
|
||||||
@ -719,7 +719,7 @@ mem_stream *s;
|
|||||||
int ZEXPORT memgzclose (file)
|
int ZEXPORT memgzclose (file)
|
||||||
gzFile file;
|
gzFile file;
|
||||||
{
|
{
|
||||||
// int err;
|
int err;
|
||||||
mem_stream *s = (mem_stream*)file;
|
mem_stream *s = (mem_stream*)file;
|
||||||
|
|
||||||
if (s == NULL) return Z_STREAM_ERROR;
|
if (s == NULL) return Z_STREAM_ERROR;
|
||||||
|
@ -8,19 +8,14 @@
|
|||||||
/* memgzio.c - IO on .gz files in memory
|
/* memgzio.c - IO on .gz files in memory
|
||||||
* Adapted from original gzio.c from zlib library by Forgotten
|
* Adapted from original gzio.c from zlib library by Forgotten
|
||||||
*/
|
*/
|
||||||
/*
|
|
||||||
#ifndef HAVE_ZUTIL_H
|
#ifndef HAVE_ZUTIL_H
|
||||||
#include "../win32/include/zlib/zutil.h"
|
#include "../win32/include/zlib/zutil.h"
|
||||||
#else
|
#else
|
||||||
#include <zutil.h>
|
#include <zutil.h>
|
||||||
#endif
|
#endif
|
||||||
*/
|
|
||||||
|
|
||||||
#include <zlib.h>
|
|
||||||
|
|
||||||
gzFile ZEXPORT memgzopen(char *memory, int, const char *);
|
gzFile ZEXPORT memgzopen(char *memory, int, const char *);
|
||||||
int ZEXPORT memgzread(gzFile, voidp, unsigned);
|
int ZEXPORT memgzread(gzFile, voidp, unsigned);
|
||||||
int ZEXPORT memgzwrite(gzFile, const voidp, unsigned);
|
int ZEXPORT memgzwrite(gzFile, const voidp, unsigned);
|
||||||
int ZEXPORT memgzclose(gzFile);
|
int ZEXPORT memgzclose(gzFile);
|
||||||
long ZEXPORT memtell(gzFile);
|
long ZEXPORT memtell(gzFile);
|
||||||
|
|
||||||
|
@ -1,242 +0,0 @@
|
|||||||
// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator.
|
|
||||||
// Copyright (C) 1999-2003 Forgotten
|
|
||||||
// Copyright (C) 2004 Forgotten and the VBA development team
|
|
||||||
|
|
||||||
// This program is free software; you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation; either version 2, or(at your option)
|
|
||||||
// any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software Foundation,
|
|
||||||
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
#include "System.h"
|
|
||||||
|
|
||||||
extern int RGB_LOW_BITS_MASK;
|
|
||||||
|
|
||||||
void Scanlines (u8 *srcPtr, u32 srcPitch, u8 *,
|
|
||||||
u8 *dstPtr, u32 dstPitch, int width, int height)
|
|
||||||
{
|
|
||||||
u8 *nextLine, *finish;
|
|
||||||
|
|
||||||
nextLine = dstPtr + dstPitch;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
u32 *bP = (u32 *) srcPtr;
|
|
||||||
u32 *dP = (u32 *) dstPtr;
|
|
||||||
u32 *nL = (u32 *) nextLine;
|
|
||||||
u32 currentPixel;
|
|
||||||
u32 nextPixel;
|
|
||||||
|
|
||||||
finish = (u8 *) bP + ((width+2) << 1);
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
currentPixel = nextPixel;
|
|
||||||
nextPixel = *bP++;
|
|
||||||
u32 colorA, colorB;
|
|
||||||
|
|
||||||
#ifdef WORDS_BIGENDIAN
|
|
||||||
colorA = currentPixel >> 16;
|
|
||||||
colorB = currentPixel & 0xffff;
|
|
||||||
#else
|
|
||||||
colorA = currentPixel & 0xffff;
|
|
||||||
colorB = currentPixel >> 16;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*(dP) = colorA | colorA<<16;
|
|
||||||
*(nL) = 0;
|
|
||||||
|
|
||||||
#ifdef WORDS_BIGENDIAN
|
|
||||||
colorA = nextPixel >> 16;
|
|
||||||
#else
|
|
||||||
colorA = nextPixel & 0xffff;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*(dP + 1) = colorB | (colorB << 16);
|
|
||||||
*(nL + 1) = 0;
|
|
||||||
|
|
||||||
dP += 2;
|
|
||||||
nL += 2;
|
|
||||||
}
|
|
||||||
while ((u8 *) bP < finish);
|
|
||||||
|
|
||||||
srcPtr += srcPitch;
|
|
||||||
dstPtr += dstPitch << 1;
|
|
||||||
nextLine += dstPitch << 1;
|
|
||||||
}
|
|
||||||
while (--height);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Scanlines32(u8 *srcPtr, u32 srcPitch, u8 * /* deltaPtr */,
|
|
||||||
u8 *dstPtr, u32 dstPitch, int width, int height)
|
|
||||||
{
|
|
||||||
u8 *nextLine, *finish;
|
|
||||||
|
|
||||||
nextLine = dstPtr + dstPitch;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
u32 *bP = (u32 *) srcPtr;
|
|
||||||
u32 *dP = (u32 *) dstPtr;
|
|
||||||
u32 *nL = (u32 *) nextLine;
|
|
||||||
u32 currentPixel;
|
|
||||||
u32 nextPixel;
|
|
||||||
|
|
||||||
finish = (u8 *) bP + ((width+1) << 2);
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
currentPixel = nextPixel;
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
u32 colorA, colorB;
|
|
||||||
|
|
||||||
colorA = currentPixel;
|
|
||||||
colorB = nextPixel;
|
|
||||||
|
|
||||||
*(dP) = colorA;
|
|
||||||
*(dP+1) = colorA;
|
|
||||||
*(nL) = 0;
|
|
||||||
*(nL+1) = 0;
|
|
||||||
|
|
||||||
*(dP + 2) = colorB;
|
|
||||||
*(dP + 3) = colorB;
|
|
||||||
*(nL+2) = 0;
|
|
||||||
*(nL+3) = 0;
|
|
||||||
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
dP += 4;
|
|
||||||
nL += 4;
|
|
||||||
}
|
|
||||||
while ((u8 *) bP < finish);
|
|
||||||
|
|
||||||
srcPtr += srcPitch;
|
|
||||||
dstPtr += dstPitch << 1;
|
|
||||||
nextLine += dstPitch << 1;
|
|
||||||
}
|
|
||||||
while (--height);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScanlinesTV(u8 *srcPtr, u32 srcPitch, u8 * /* deltaPtr */,
|
|
||||||
u8 *dstPtr, u32 dstPitch, int width, int height)
|
|
||||||
{
|
|
||||||
u8 *nextLine, *finish;
|
|
||||||
u32 colorMask = ~(RGB_LOW_BITS_MASK | (RGB_LOW_BITS_MASK << 16));
|
|
||||||
|
|
||||||
nextLine = dstPtr + dstPitch;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
u32 *bP = (u32 *) srcPtr;
|
|
||||||
u32 *dP = (u32 *) dstPtr;
|
|
||||||
u32 *nL = (u32 *) nextLine;
|
|
||||||
u32 currentPixel;
|
|
||||||
u32 nextPixel;
|
|
||||||
|
|
||||||
finish = (u8 *) bP + ((width+2) << 1);
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
currentPixel = nextPixel;
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
u32 colorA, colorB;
|
|
||||||
|
|
||||||
#ifdef WORDS_BIGENDIAN
|
|
||||||
colorA = currentPixel >> 16;
|
|
||||||
colorB = currentPixel & 0xFFFF;
|
|
||||||
#else
|
|
||||||
colorA = currentPixel & 0xFFFF;
|
|
||||||
colorB = currentPixel >> 16;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*(dP) = colorA = colorA | ((((colorA & colorMask) >> 1) +
|
|
||||||
((colorB & colorMask) >> 1))) << 16;
|
|
||||||
colorA = ((colorA & colorMask) >> 1);
|
|
||||||
colorA += ((colorA & colorMask) >> 1);
|
|
||||||
*(nL) = colorA;
|
|
||||||
|
|
||||||
colorA = nextPixel & 0xFFFF;
|
|
||||||
|
|
||||||
*(dP + 1) = colorB = colorB | ((((colorA & colorMask) >> 1) +
|
|
||||||
((colorB & colorMask) >> 1))) << 16;
|
|
||||||
colorB = ((colorB & colorMask) >> 1);
|
|
||||||
colorB += ((colorB & colorMask) >> 1);
|
|
||||||
|
|
||||||
*(nL + 1) = colorB;
|
|
||||||
|
|
||||||
dP += 2;
|
|
||||||
nL += 2;
|
|
||||||
}
|
|
||||||
while ((u8 *) bP < finish);
|
|
||||||
|
|
||||||
srcPtr += srcPitch;
|
|
||||||
dstPtr += dstPitch << 1;
|
|
||||||
nextLine += dstPitch << 1;
|
|
||||||
}
|
|
||||||
while (--height);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScanlinesTV32(u8 *srcPtr, u32 srcPitch, u8 * /* deltaPtr */,
|
|
||||||
u8 *dstPtr, u32 dstPitch, int width, int height)
|
|
||||||
{
|
|
||||||
u8 *nextLine, *finish;
|
|
||||||
u32 colorMask = ~RGB_LOW_BITS_MASK;
|
|
||||||
|
|
||||||
nextLine = dstPtr + dstPitch;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
u32 *bP = (u32 *) srcPtr;
|
|
||||||
u32 *dP = (u32 *) dstPtr;
|
|
||||||
u32 *nL = (u32 *) nextLine;
|
|
||||||
u32 currentPixel;
|
|
||||||
u32 nextPixel;
|
|
||||||
|
|
||||||
finish = (u8 *) bP + ((width+1) << 2);
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
currentPixel = nextPixel;
|
|
||||||
nextPixel = *bP++;
|
|
||||||
|
|
||||||
u32 colorA, colorB, temp;
|
|
||||||
|
|
||||||
colorA = currentPixel;
|
|
||||||
colorB = nextPixel;
|
|
||||||
|
|
||||||
*(dP) = colorA;
|
|
||||||
*(dP+1) = temp = ((colorA & colorMask) >> 1) +
|
|
||||||
((colorB & colorMask) >> 1);
|
|
||||||
temp = ((temp & colorMask) >> 1);
|
|
||||||
temp += ((temp & colorMask) >> 1);
|
|
||||||
colorA = ((colorA & colorMask) >> 1);
|
|
||||||
colorA += ((colorA & colorMask) >> 1);
|
|
||||||
|
|
||||||
*(nL) = colorA;
|
|
||||||
*(nL+1) = temp;
|
|
||||||
|
|
||||||
dP += 2;
|
|
||||||
nL += 2;
|
|
||||||
}
|
|
||||||
while ((u8 *) bP < finish);
|
|
||||||
|
|
||||||
srcPtr += srcPitch;
|
|
||||||
dstPtr += dstPitch << 1;
|
|
||||||
nextLine += dstPitch << 1;
|
|
||||||
}
|
|
||||||
while (--height);
|
|
||||||
}
|
|
@ -66,7 +66,7 @@ extern "C"
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _ZLIB_H
|
#ifndef _ZLIB_H
|
||||||
#include <zlib.h>
|
#include "zlib.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
|
#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user