Major Linux updates by bgKu:
- Added a basic manpage - Added a default Linux configuration file - Applied debian patch 01_use_dot_dir. This makes vba save the save states and battery files to $HOME/.vbam/. It is useful because the rom path is very likely to be read only. These paths can still be overridden using the config file. The configuration file and the vba-over.ini file can also be loaded from that .vbam path. Needs some Windows testing. - Text.cpp/h getopt.c/h are sdl specific so moved them to the sdl folder. - Removed the ability to disable the ASM version of the Sai2x scalers at runtime (to make them behave like the HQ filters) - Fix the command line parsing bug I introduced in rev 191 (thanks to MNK) - Gave to the interframe blending filters the same interface as fullscreen filters
This commit is contained in:
parent
806e5b0ff4
commit
30c9988e0a
13
Makefile
13
Makefile
|
@ -1,7 +1,8 @@
|
|||
MACHINE= $(shell uname -s)
|
||||
SYSCONFDIR=/etc
|
||||
CC=gcc
|
||||
CPPC=g++
|
||||
CFLAGS=-W -Wall -Wno-unused -O3 -DHAVE_NETINET_IN_H -DHAVE_ARPA_INET_H -DHAVE_ZLIB_H -DFINAL_VERSION -DBKPT_SUPPORT -DSDL -DSYSCONFDIR="home" -DUSE_OPENGL -DC_CORE
|
||||
CFLAGS=-W -Wall -Wno-unused -O3 -DHAVE_NETINET_IN_H -DHAVE_ARPA_INET_H -DHAVE_ZLIB_H -DFINAL_VERSION -DBKPT_SUPPORT -DSDL -DSYSCONFDIR=\"$(SYSCONFDIR)\" -DUSE_OPENGL -DC_CORE
|
||||
CXXFLAGS=${CFLAGS}
|
||||
ASM=nasm
|
||||
ASMFLAGS=-w-orphan-labels -f elf -DELF -O1 -Isrc/hq/asm/
|
||||
|
@ -47,7 +48,7 @@ HQASMDIR=src/hq/asm
|
|||
|
||||
|
||||
ASMOBJ=${HQASMDIR}/hq3x_16${OE} ${HQASMDIR}/hq3x_32${OE} ${HQASMDIR}/hq4x_16${OE} \
|
||||
${HQASMDIR}/hq4x_32${OE} ${HQASMDIR}/hq3x32${OE}
|
||||
${HQASMDIR}/hq4x_32${OE} ${HQASMDIR}/hq3x32${OE} ${MAINDIR}/2xSaImmx${OE}
|
||||
|
||||
GBAPUOBJ=${GBAPUDIR}/Blip_Buffer${OE} ${GBAPUDIR}/Effects_Buffer${OE} ${GBAPUDIR}/Gb_Apu${OE} \
|
||||
${GBAPUDIR}/Gb_Apu_State${OE} ${GBAPUDIR}/Gb_Oscs${OE} ${GBAPUDIR}/Multi_Buffer${OE}
|
||||
|
@ -62,7 +63,7 @@ ${MAINDIR}/hq2x${OE} ${MAINDIR}/GBA-thumb${OE} ${MAINDIR}/GBA-arm${OE} ${MAINDIR
|
|||
${MAINDIR}/Mode1${OE} ${MAINDIR}/Mode2${OE} ${MAINDIR}/Mode3${OE} ${MAINDIR}/Mode4${OE} \
|
||||
${MAINDIR}/Mode5${OE} ${MAINDIR}/pixel${OE} \
|
||||
${MAINDIR}/remote${OE} ${MAINDIR}/RTC${OE} ${MAINDIR}/scanline${OE} \
|
||||
${MAINDIR}/Sound${OE} ${MAINDIR}/Sram${OE} ${MAINDIR}/Text${OE} ${MAINDIR}/Util${OE} \
|
||||
${MAINDIR}/Sound${OE} ${MAINDIR}/Sram${OE} ${MAINDIR}/Util${OE} \
|
||||
${MAINDIR}/expr${OE} ${MAINDIR}/exprNode${OE} ${MAINDIR}/expr-lex${OE} \
|
||||
${MAINDIR}/memgzio${OE}
|
||||
|
||||
|
@ -70,12 +71,14 @@ DMGOBJ=${DMGDIR}/GB${OE} ${DMGDIR}/gbCheats${OE} ${DMGDIR}/gbDis${OE} ${DMGDIR}/
|
|||
${DMGDIR}/gbGlobals${OE} ${DMGDIR}/gbMemory${OE} ${DMGDIR}/gbPrinter${OE} ${DMGDIR}/gbSGB${OE} \
|
||||
${DMGDIR}/gbSound${OE}
|
||||
|
||||
SDLOBJ=${SDLDIR}/debugger${OE} ${SDLDIR}/SDL${OE} ${SDLDIR}/dummy${OE} ${SDLDIR}/filters${OE}
|
||||
SDLOBJ=${SDLDIR}/debugger${OE} ${SDLDIR}/SDL${OE} ${SDLDIR}/dummy${OE} ${SDLDIR}/filters${OE} \
|
||||
${SDLDIR}/text${OE}
|
||||
|
||||
OBJECTS=${MAINOBJ} ${DMGOBJ} ${SDLOBJ} ${GBAPUOBJ}
|
||||
|
||||
ifeq ($(USEASM),yes)
|
||||
OBJECTS+=${ASMOBJ}
|
||||
CXXFLAGS+=-DMMX
|
||||
else
|
||||
OBJECTS+=${CALTERNOBJ}
|
||||
endif
|
||||
|
@ -110,4 +113,6 @@ clean:
|
|||
|
||||
install: ${OUT}
|
||||
install -d $(DESTDIR)$(PREFIX)/bin
|
||||
install -d $(DESTDIR)$(SYSCONFDIR)
|
||||
install ./${OUT} $(DESTDIR)$(PREFIX)/bin
|
||||
install ./${SDLDIR}/VisualBoyAdvance.cfg-example $(DESTDIR)$(SYSCONFDIR)/VisualBoyAdvance.cfg
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
vbam (0.svn333-1) unstable; urgency=low
|
||||
|
||||
* Added a man page
|
||||
* Added a default configuration file
|
||||
* Updated VBA-M to r333
|
||||
|
||||
-- Bastien Bouclet <bgkweb@gmail.com> Tue, 22 Jan 2008 22:06:31 +0100
|
||||
|
||||
vbam (0.svn307-1) unstable; urgency=low
|
||||
|
||||
* Initial release
|
||||
|
|
157
src/Text.cpp
157
src/Text.cpp
|
@ -1,157 +0,0 @@
|
|||
/* FCE Ultra - NES/Famicom Emulator
|
||||
*
|
||||
* Copyright notice for this file:
|
||||
* Copyright (C) 2002 Ben Parnell
|
||||
*
|
||||
* 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 of the License, 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
|
||||
*/
|
||||
|
||||
/* Code originally from fceu/drawing.h file, adapted by Forgotten
|
||||
*/
|
||||
#include "System.h"
|
||||
|
||||
extern int RGB_LOW_BITS_MASK;
|
||||
|
||||
static const u8 fontdata2[2048] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x81,0xa5,0x81,0xbd,0x99,0x81,0x7e,0x7e,0xff,0xdb,0xff,0xc3,0xe7,0xff,0x7e,0x36,0x7f,0x7f,0x7f,0x3e,0x1c,0x08,0x00,0x08,0x1c,0x3e,0x7f,0x3e,0x1c,0x08,0x00,0x1c,0x3e,0x1c,0x7f,0x7f,0x3e,0x1c,0x3e,0x08,0x08,0x1c,0x3e,0x7f,0x3e,0x1c,0x3e,0x00,0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,0xff,0xff,0xe7,0xc3,0xc3,0xe7,0xff,0xff,0x00,0x3c,0x66,0x42,0x42,0x66,0x3c,0x00,0xff,0xc3,0x99,0xbd,0xbd,0x99,0xc3,0xff,0xf0,0xe0,0xf0,0xbe,0x33,0x33,0x33,0x1e,0x3c,0x66,0x66,0x66,0x3c,0x18,0x7e,0x18,0xfc,0xcc,0xfc,0x0c,0x0c,0x0e,0x0f,0x07,0xfe,0xc6,0xfe,0xc6,0xc6,0xe6,0x67,0x03,0x99,0x5a,0x3c,0xe7,0xe7,0x3c,0x5a,0x99,0x01,0x07,0x1f,0x7f,0x1f,0x07,0x01,0x00,0x40,0x70,0x7c,0x7f,0x7c,0x70,0x40,0x00,0x18,0x3c,0x7e,0x18,0x18,0x7e,0x3c,0x18,0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,0xfe,0xdb,0xdb,0xde,0xd8,0xd8,0xd8,0x00,0x7c,0xc6,0x1c,0x36,0x36,0x1c,0x33,0x1e,0x00,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x00,0x18,0x3c,0x7e,0x18,0x7e,0x3c,0x18,0xff,0x18,0x3c,0x7e,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x7e,0x3c,0x18,0x00,0x00,0x18,0x30,0x7f,0x30,0x18,0x00,0x00,0x00,0x0c,0x06,0x7f,0x06,0x0c,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x7f,0x00,0x00,0x00,0x24,0x66,0xff,0x66,0x24,0x00,0x00,0x00,0x18,0x3c,0x7e,0xff,0xff,0x00,0x00,0x00,0xff,0xff,0x7e,0x3c,0x18,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1e,0x1e,0x0c,0x0c,0x00,0x0c,0x00,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x7f,0x36,0x7f,0x36,0x36,0x00,0x0c,0x3e,0x03,0x1e,0x30,0x1f,0x0c,0x00,0x00,0x63,0x33,0x18,0x0c,0x66,0x63,0x00,0x1c,0x36,0x1c,0x6e,0x3b,0x33,0x6e,0x00,0x06,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x18,0x0c,0x06,0x06,0x06,0x0c,0x18,0x00,0x06,0x0c,0x18,0x18,0x18,0x0c,0x06,0x00,0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,0x00,0x0c,0x0c,0x3f,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x06,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x00,0x60,0x30,0x18,0x0c,0x06,0x03,0x01,0x00,0x3e,0x63,0x73,0x7b,0x6f,0x67,0x3e,0x00,0x0c,0x0e,0x0c,0x0c,0x0c,0x0c,0x3f,0x00,0x1e,0x33,0x30,0x1c,0x06,0x33,0x3f,0x00,0x1e,0x33,0x30,0x1c,0x30,0x33,0x1e,0x00,0x38,0x3c,0x36,0x33,0x7f,0x30,0x78,0x00,0x3f,0x03,0x1f,0x30,0x30,0x33,0x1e,0x00,0x1c,0x06,0x03,0x1f,0x33,0x33,0x1e,0x00,0x3f,0x33,0x30,0x18,0x0c,0x0c,0x0c,0x00,0x1e,0x33,0x33,0x1e,0x33,0x33,0x1e,0x00,0x1e,0x33,0x33,0x3e,0x30,0x18,0x0e,0x00,0x00,0x0c,0x0c,0x00,0x00,0x0c,0x0c,0x00,0x00,0x0c,0x0c,0x00,0x00,0x0c,0x0c,0x06,0x18,0x0c,0x06,0x03,0x06,0x0c,0x18,0x00,0x00,0x00,0x3f,0x00,0x00,0x3f,0x00,0x00,0x06,0x0c,0x18,0x30,0x18,0x0c,0x06,0x00,0x1e,0x33,0x30,0x18,0x0c,0x00,0x0c,0x00,
|
||||
0x3e,0x63,0x7b,0x7b,0x7b,0x03,0x1e,0x00,0x0c,0x1e,0x33,0x33,0x3f,0x33,0x33,0x00,0x3f,0x66,0x66,0x3e,0x66,0x66,0x3f,0x00,0x3c,0x66,0x03,0x03,0x03,0x66,0x3c,0x00,0x1f,0x36,0x66,0x66,0x66,0x36,0x1f,0x00,0x7f,0x46,0x16,0x1e,0x16,0x46,0x7f,0x00,0x7f,0x46,0x16,0x1e,0x16,0x06,0x0f,0x00,0x3c,0x66,0x03,0x03,0x73,0x66,0x7c,0x00,0x33,0x33,0x33,0x3f,0x33,0x33,0x33,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x78,0x30,0x30,0x30,0x33,0x33,0x1e,0x00,0x67,0x66,0x36,0x1e,0x36,0x66,0x67,0x00,0x0f,0x06,0x06,0x06,0x46,0x66,0x7f,0x00,0x63,0x77,0x7f,0x7f,0x6b,0x63,0x63,0x00,0x63,0x67,0x6f,0x7b,0x73,0x63,0x63,0x00,0x1c,0x36,0x63,0x63,0x63,0x36,0x1c,0x00,0x3f,0x66,0x66,0x3e,0x06,0x06,0x0f,0x00,0x1e,0x33,0x33,0x33,0x3b,0x1e,0x38,0x00,0x3f,0x66,0x66,0x3e,0x36,0x66,0x67,0x00,0x1e,0x33,0x07,0x0e,0x38,0x33,0x1e,0x00,0x3f,0x2d,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x3f,0x00,0x33,0x33,0x33,0x33,0x33,0x1e,0x0c,0x00,0x63,0x63,0x63,0x6b,0x7f,0x77,0x63,0x00,0x63,0x63,0x36,0x1c,0x1c,0x36,0x63,0x00,0x33,0x33,0x33,0x1e,0x0c,0x0c,0x1e,0x00,0x7f,0x63,0x31,0x18,0x4c,0x66,0x7f,0x00,0x1e,0x06,0x06,0x06,0x06,0x06,0x1e,0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0x40,0x00,0x1e,0x18,0x18,0x18,0x18,0x18,0x1e,0x00,0x08,0x1c,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
|
||||
0x0c,0x0c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x30,0x3e,0x33,0x6e,0x00,0x07,0x06,0x06,0x3e,0x66,0x66,0x3b,0x00,0x00,0x00,0x1e,0x33,0x03,0x33,0x1e,0x00,0x38,0x30,0x30,0x3e,0x33,0x33,0x6e,0x00,0x00,0x00,0x1e,0x33,0x3f,0x03,0x1e,0x00,0x1c,0x36,0x06,0x0f,0x06,0x06,0x0f,0x00,0x00,0x00,0x6e,0x33,0x33,0x3e,0x30,0x1f,0x07,0x06,0x36,0x6e,0x66,0x66,0x67,0x00,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x1e,0x00,0x30,0x00,0x30,0x30,0x30,0x33,0x33,0x1e,0x07,0x06,0x66,0x36,0x1e,0x36,0x67,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,0x00,0x33,0x7f,0x7f,0x6b,0x63,0x00,0x00,0x00,0x1f,0x33,0x33,0x33,0x33,0x00,0x00,0x00,0x1e,0x33,0x33,0x33,0x1e,0x00,0x00,0x00,0x3b,0x66,0x66,0x3e,0x06,0x0f,0x00,0x00,0x6e,0x33,0x33,0x3e,0x30,0x78,0x00,0x00,0x3b,0x6e,0x66,0x06,0x0f,0x00,0x00,0x00,0x3e,0x03,0x1e,0x30,0x1f,0x00,0x08,0x0c,0x3e,0x0c,0x0c,0x2c,0x18,0x00,0x00,0x00,0x33,0x33,0x33,0x33,0x6e,0x00,0x00,0x00,0x33,0x33,0x33,0x1e,0x0c,0x00,0x00,0x00,0x63,0x6b,0x7f,0x7f,0x36,0x00,0x00,0x00,0x63,0x36,0x1c,0x36,0x63,0x00,0x00,0x00,0x33,0x33,0x33,0x3e,0x30,0x1f,0x00,0x00,0x3f,0x19,0x0c,0x26,0x3f,0x00,0x38,0x0c,0x0c,0x07,0x0c,0x0c,0x38,0x00,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x00,0x07,0x0c,0x0c,0x38,0x0c,0x0c,0x07,0x00,0x6e,0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x1c,0x36,0x63,0x63,0x7f,0x00,
|
||||
0x1e,0x33,0x03,0x33,0x1e,0x18,0x30,0x1e,0x00,0x33,0x00,0x33,0x33,0x33,0x7e,0x00,0x38,0x00,0x1e,0x33,0x3f,0x03,0x1e,0x00,0x7e,0xc3,0x3c,0x60,0x7c,0x66,0xfc,0x00,0x33,0x00,0x1e,0x30,0x3e,0x33,0x7e,0x00,0x07,0x00,0x1e,0x30,0x3e,0x33,0x7e,0x00,0x0c,0x0c,0x1e,0x30,0x3e,0x33,0x7e,0x00,0x00,0x00,0x1e,0x03,0x03,0x1e,0x30,0x1c,0x7e,0xc3,0x3c,0x66,0x7e,0x06,0x3c,0x00,0x33,0x00,0x1e,0x33,0x3f,0x03,0x1e,0x00,0x07,0x00,0x1e,0x33,0x3f,0x03,0x1e,0x00,0x33,0x00,0x0e,0x0c,0x0c,0x0c,0x1e,0x00,0x3e,0x63,0x1c,0x18,0x18,0x18,0x3c,0x00,0x07,0x00,0x0e,0x0c,0x0c,0x0c,0x1e,0x00,0x63,0x1c,0x36,0x63,0x7f,0x63,0x63,0x00,0x0c,0x0c,0x00,0x1e,0x33,0x3f,0x33,0x00,0x38,0x00,0x3f,0x06,0x1e,0x06,0x3f,0x00,0x00,0x00,0xfe,0x30,0xfe,0x33,0xfe,0x00,0x7c,0x36,0x33,0x7f,0x33,0x33,0x73,0x00,0x1e,0x33,0x00,0x1e,0x33,0x33,0x1e,0x00,0x00,0x33,0x00,0x1e,0x33,0x33,0x1e,0x00,0x00,0x07,0x00,0x1e,0x33,0x33,0x1e,0x00,0x1e,0x33,0x00,0x33,0x33,0x33,0x7e,0x00,0x00,0x07,0x00,0x33,0x33,0x33,0x7e,0x00,0x00,0x33,0x00,0x33,0x33,0x3e,0x30,0x1f,0xc3,0x18,0x3c,0x66,0x66,0x3c,0x18,0x00,0x33,0x00,0x33,0x33,0x33,0x33,0x1e,0x00,0x18,0x18,0x7e,0x03,0x03,0x7e,0x18,0x18,0x1c,0x36,0x26,0x0f,0x06,0x67,0x3f,0x00,0x33,0x33,0x1e,0x3f,0x0c,0x3f,0x0c,0x0c,0x1f,0x33,0x33,0x5f,0x63,0xf3,0x63,0xe3,0x70,0xd8,0x18,0x3c,0x18,0x18,0x1b,0x0e,
|
||||
0x38,0x00,0x1e,0x30,0x3e,0x33,0x7e,0x00,0x1c,0x00,0x0e,0x0c,0x0c,0x0c,0x1e,0x00,0x00,0x38,0x00,0x1e,0x33,0x33,0x1e,0x00,0x00,0x38,0x00,0x33,0x33,0x33,0x7e,0x00,0x00,0x1f,0x00,0x1f,0x33,0x33,0x33,0x00,0x3f,0x00,0x33,0x37,0x3f,0x3b,0x33,0x00,0x3c,0x36,0x36,0x7c,0x00,0x7e,0x00,0x00,0x1c,0x36,0x36,0x1c,0x00,0x3e,0x00,0x00,0x0c,0x00,0x0c,0x06,0x03,0x33,0x1e,0x00,0x00,0x00,0x00,0x3f,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x3f,0x30,0x30,0x00,0x00,0xc3,0x63,0x33,0x7b,0xcc,0x66,0x33,0xf0,0xc3,0x63,0x33,0xdb,0xec,0xf6,0xf3,0xc0,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x00,0x00,0xcc,0x66,0x33,0x66,0xcc,0x00,0x00,0x00,0x33,0x66,0xcc,0x66,0x33,0x00,0x00,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xdb,0xee,0xdb,0x77,0xdb,0xee,0xdb,0x77,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x18,0x18,0x18,0x18,0x18,0x1f,0x18,0x1f,0x18,0x18,0x18,0x6c,0x6c,0x6c,0x6c,0x6f,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00,0x7f,0x6c,0x6c,0x6c,0x00,0x00,0x1f,0x18,0x1f,0x18,0x18,0x18,0x6c,0x6c,0x6f,0x60,0x6f,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x7f,0x60,0x6f,0x6c,0x6c,0x6c,0x6c,0x6c,0x6f,0x60,0x7f,0x00,0x00,0x00,0x6c,0x6c,0x6c,0x6c,0x7f,0x00,0x00,0x00,0x18,0x18,0x1f,0x18,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0x18,0xf8,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0xff,0x18,0x18,0x18,0x18,0x18,0xf8,0x18,0xf8,0x18,0x18,0x18,0x6c,0x6c,0x6c,0x6c,0xec,0x6c,0x6c,0x6c,0x6c,0x6c,0xec,0x0c,0xfc,0x00,0x00,0x00,0x00,0x00,0xfc,0x0c,0xec,0x6c,0x6c,0x6c,0x6c,0x6c,0xef,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xef,0x6c,0x6c,0x6c,0x6c,0x6c,0xec,0x0c,0xec,0x6c,0x6c,0x6c,0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x6c,0x6c,0xef,0x00,0xef,0x6c,0x6c,0x6c,0x18,0x18,0xff,0x00,0xff,0x00,0x00,0x00,0x6c,0x6c,0x6c,0x6c,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0xff,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0xfc,0x00,0x00,0x00,0x18,0x18,0xf8,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0xf8,0x18,0xf8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0xfc,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0xff,0x6c,0x6c,0x6c,0x18,0x18,0xff,0x18,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x18,0x18,0x18,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x6e,0x3b,0x13,0x3b,0x6e,0x00,0x00,0x1e,0x33,0x1f,0x33,0x1f,0x03,0x03,0x00,0x3f,0x33,0x03,0x03,0x03,0x03,0x00,0x00,0x7f,0x36,0x36,0x36,0x36,0x36,0x00,0x3f,0x33,0x06,0x0c,0x06,0x33,0x3f,0x00,0x00,0x00,0x7e,0x1b,0x1b,0x1b,0x0e,0x00,0x00,0x66,0x66,0x66,0x66,0x3e,0x06,0x03,0x00,0x6e,0x3b,0x18,0x18,0x18,0x18,0x00,0x3f,0x0c,0x1e,0x33,0x33,0x1e,0x0c,0x3f,0x1c,0x36,0x63,0x7f,0x63,0x36,0x1c,0x00,0x1c,0x36,0x63,0x63,0x36,0x36,0x77,0x00,0x38,0x0c,0x18,0x3e,0x33,0x33,0x1e,0x00,0x00,0x00,0x7e,0xdb,0xdb,0x7e,0x00,0x00,0x60,0x30,0x7e,0xdb,0xdb,0x7e,0x06,0x03,0x1c,0x06,0x03,0x1f,0x03,0x06,0x1c,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x3f,0x00,0x3f,0x00,0x3f,0x00,0x00,0x0c,0x0c,0x3f,0x0c,0x0c,0x00,0x3f,0x00,0x06,0x0c,0x18,0x0c,0x06,0x00,0x3f,0x00,0x18,0x0c,0x06,0x0c,0x18,0x00,0x3f,0x00,0x70,0xd8,0xd8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x0e,0x0c,0x0c,0x00,0x3f,0x00,0x0c,0x0c,0x00,0x00,0x6e,0x3b,0x00,0x6e,0x3b,0x00,0x00,0x1c,0x36,0x36,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xf0,0x30,0x30,0x30,0x37,0x36,0x3c,0x38,0x1e,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x0e,0x18,0x0c,0x06,0x1e,0x00,0x00,0x00,0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
};
|
||||
|
||||
static void drawTextInternal(u8 *screen, int pitch, int x, int y,
|
||||
const char *string, bool trans)
|
||||
{
|
||||
screen += y*pitch;
|
||||
int inc = 2;
|
||||
switch(systemColorDepth) {
|
||||
case 24:
|
||||
inc = 3;
|
||||
break;
|
||||
case 32:
|
||||
inc = 4;
|
||||
break;
|
||||
}
|
||||
screen += x*inc;
|
||||
|
||||
switch(systemColorDepth) {
|
||||
case 16:
|
||||
{
|
||||
while(*string) {
|
||||
char c = *string++;
|
||||
u8 *scr = screen;
|
||||
|
||||
u16 mask = ~RGB_LOW_BITS_MASK;
|
||||
int h, w;
|
||||
u16 *s = (u16 *)scr;
|
||||
for (h = 0; h < 8; h++) {
|
||||
for (w = 0; w < 8; w++, s++) {
|
||||
int on = (fontdata2[(c<<3)+h]>>w)&1;
|
||||
|
||||
if(trans) {
|
||||
if(on)
|
||||
*s = ((0xf) << systemRedShift) +
|
||||
((*s & mask) >>1);
|
||||
} else {
|
||||
if(on)
|
||||
*s = (0x1f) << systemRedShift;
|
||||
}
|
||||
}
|
||||
scr += pitch;
|
||||
s = (u16 *)scr;
|
||||
}
|
||||
screen += inc*8;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
{
|
||||
while(*string) {
|
||||
char c = *string++;
|
||||
u8 *scr = screen;
|
||||
|
||||
int h, w;
|
||||
u8 *s = (u8 *)scr;
|
||||
for (h = 0; h < 8; h++) {
|
||||
for (w = 0; w < 8; w++, s+=3) {
|
||||
int on = (fontdata2[(c<<3)+h]>>w)&1;
|
||||
|
||||
if(trans) {
|
||||
if(on) {
|
||||
u32 color = (0x1f) << systemRedShift;
|
||||
*s = ((color & 255)>>1)+(*s>>1);
|
||||
*(s+1) = (((color >> 8) & 255)>>1)+(*(s+1)>>1);
|
||||
*(s+2) = (((color >> 16) & 255)>>1)+(*(s+2)>>1);
|
||||
}
|
||||
} else {
|
||||
if(on) {
|
||||
u32 color = (0x1f) << systemRedShift;
|
||||
*s = (color & 255);
|
||||
*(s+1) = (color >> 8) & 255;
|
||||
*(s+2) = (color >> 16) & 255;
|
||||
}
|
||||
}
|
||||
}
|
||||
scr += pitch;
|
||||
s = (u8 *)scr;
|
||||
}
|
||||
screen += inc*8;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
{
|
||||
while(*string) {
|
||||
char c = *string++;
|
||||
u8 *scr = screen;
|
||||
|
||||
int h, w;
|
||||
u32 mask = 0xfefefe;
|
||||
u32 *s = (u32 *)scr;
|
||||
for (h = 0; h < 8; h++) {
|
||||
for (w = 0; w < 8; w++, s++) {
|
||||
int on = (fontdata2[(c<<3)+h]>>w)&1;
|
||||
|
||||
if(trans) {
|
||||
if(on)
|
||||
*s = ((0xf) << systemRedShift) + ((*s & mask)>>1);
|
||||
} else {
|
||||
if(on)
|
||||
*s = (0x1f) << systemRedShift;
|
||||
}
|
||||
}
|
||||
scr += pitch;
|
||||
s = (u32 *)scr;
|
||||
}
|
||||
screen += inc*8;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void drawText(u8 *screen, int pitch, int x, int y, const char *string)
|
||||
{
|
||||
drawTextInternal(screen, pitch, x, y, string, false);
|
||||
}
|
||||
|
||||
void drawTextTransp(u8 *screen, int pitch, int x, int y, const char *string)
|
||||
{
|
||||
drawTextInternal(screen, pitch, x, y, string, true);
|
||||
}
|
21
src/Text.h
21
src/Text.h
|
@ -1,21 +0,0 @@
|
|||
// -*- C++ -*-
|
||||
// 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.
|
||||
|
||||
extern void drawText(u8 *, int, int, int, const char *);
|
||||
extern void drawTextTransp(u8 *, int, int, int, const char *);
|
1060
src/getopt.c
1060
src/getopt.c
File diff suppressed because it is too large
Load Diff
141
src/getopt.h
141
src/getopt.h
|
@ -1,141 +0,0 @@
|
|||
/* Declarations for getopt.
|
||||
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998, 2000
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@gnu.org.
|
||||
|
||||
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. */
|
||||
|
||||
#ifndef _GETOPT_H
|
||||
#define _GETOPT_H 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* For communication from `getopt' to the caller.
|
||||
When `getopt' finds an option that takes an argument,
|
||||
the argument value is returned here.
|
||||
Also, when `ordering' is RETURN_IN_ORDER,
|
||||
each non-option ARGV-element is returned here. */
|
||||
|
||||
extern char *optarg;
|
||||
|
||||
/* Index in ARGV of the next element to be scanned.
|
||||
This is used for communication to and from the caller
|
||||
and for communication between successive calls to `getopt'.
|
||||
|
||||
On entry to `getopt', zero means this is the first call; initialize.
|
||||
|
||||
When `getopt' returns -1, this is the index of the first of the
|
||||
non-option elements that the caller should itself scan.
|
||||
|
||||
Otherwise, `optind' communicates from one call to the next
|
||||
how much of ARGV has been scanned so far. */
|
||||
|
||||
extern int optind;
|
||||
|
||||
/* Callers store zero here to inhibit the error message `getopt' prints
|
||||
for unrecognized options. */
|
||||
|
||||
extern int opterr;
|
||||
|
||||
/* Set to an option character which was unrecognized. */
|
||||
|
||||
extern int optopt;
|
||||
|
||||
/* Describe the long-named options requested by the application.
|
||||
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
|
||||
of `struct option' terminated by an element containing a name which is
|
||||
zero.
|
||||
|
||||
The field `has_arg' is:
|
||||
no_argument (or 0) if the option does not take an argument,
|
||||
required_argument (or 1) if the option requires an argument,
|
||||
optional_argument (or 2) if the option takes an optional argument.
|
||||
|
||||
If the field `flag' is not NULL, it points to a variable that is set
|
||||
to the value given in the field `val' when the option is found, but
|
||||
left unchanged if the option is not found.
|
||||
|
||||
To have a long-named option do something other than set an `int' to
|
||||
a compiled-in constant, such as set a value from `optarg', set the
|
||||
option's `flag' field to zero and its `val' field to a nonzero
|
||||
value (the equivalent single-letter option character, if there is
|
||||
one). For long options that have a zero `flag' field, `getopt'
|
||||
returns the contents of the `val' field. */
|
||||
|
||||
struct option
|
||||
{
|
||||
#if defined (__STDC__) && __STDC__
|
||||
const char *name;
|
||||
#else
|
||||
char *name;
|
||||
#endif
|
||||
/* has_arg can't be an enum because some compilers complain about
|
||||
type mismatches in all the code that assumes it is an int. */
|
||||
int has_arg;
|
||||
int *flag;
|
||||
int val;
|
||||
};
|
||||
|
||||
/* Names for the values of the `has_arg' field of `struct option'. */
|
||||
|
||||
#define no_argument 0
|
||||
#define required_argument 1
|
||||
#define optional_argument 2
|
||||
|
||||
#if defined (__STDC__) && __STDC__
|
||||
/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
|
||||
undefined, we haven't run the autoconf check so provide the
|
||||
declaration without arguments. If it is 0, we checked and failed
|
||||
to find the declaration so provide a fully prototyped one. If it
|
||||
is 1, we found it so don't provide any declaration at all. */
|
||||
#if defined (__GNU_LIBRARY__) || (defined (HAVE_DECL_GETOPT) && !HAVE_DECL_GETOPT)
|
||||
/* Many other libraries have conflicting prototypes for getopt, with
|
||||
differences in the consts, in stdlib.h. To avoid compilation
|
||||
errors, only prototype getopt for the GNU C library. */
|
||||
extern int getopt (int argc, char *const *argv, const char *shortopts);
|
||||
#else /* not __GNU_LIBRARY__ */
|
||||
# if !defined (HAVE_DECL_GETOPT)
|
||||
extern int getopt ();
|
||||
# endif
|
||||
#endif /* __GNU_LIBRARY__ */
|
||||
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
|
||||
const struct option *longopts, int *longind);
|
||||
extern int getopt_long_only (int argc, char *const *argv,
|
||||
const char *shortopts,
|
||||
const struct option *longopts, int *longind);
|
||||
|
||||
/* Internal only. Users should not call this directly. */
|
||||
extern int _getopt_internal (int argc, char *const *argv,
|
||||
const char *shortopts,
|
||||
const struct option *longopts, int *longind,
|
||||
int long_only);
|
||||
#else /* not __STDC__ */
|
||||
extern int getopt ();
|
||||
extern int getopt_long ();
|
||||
extern int getopt_long_only ();
|
||||
|
||||
extern int _getopt_internal ();
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* getopt.h */
|
190
src/getopt1.c
190
src/getopt1.c
|
@ -1,190 +0,0 @@
|
|||
/* getopt_long and getopt_long_only entry points for GNU getopt.
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
NOTE: This source is derived from an old version taken from the GNU C
|
||||
Library (glibc).
|
||||
|
||||
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. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "getopt.h"
|
||||
|
||||
#if !defined __STDC__ || !__STDC__
|
||||
/* This is a separate conditional since some stdc systems
|
||||
reject `defined (const)'. */
|
||||
#ifndef const
|
||||
#define const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* Comment out all this code if we are using the GNU C Library, and are not
|
||||
actually compiling the library itself. This code is part of the GNU C
|
||||
Library, but also included in many other GNU distributions. Compiling
|
||||
and linking in this code is a waste when using the GNU C library
|
||||
(especially if it is a shared library). Rather than having every GNU
|
||||
program understand `configure --with-gnu-libc' and omit the object files,
|
||||
it is simpler to just do this in the source for each such file. */
|
||||
|
||||
#define GETOPT_INTERFACE_VERSION 2
|
||||
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
|
||||
#include <gnu-versions.h>
|
||||
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
|
||||
#define ELIDE_CODE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ELIDE_CODE
|
||||
|
||||
|
||||
/* This needs to come after some library #include
|
||||
to get __GNU_LIBRARY__ defined. */
|
||||
#ifdef __GNU_LIBRARY__
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
int
|
||||
getopt_long (argc, argv, options, long_options, opt_index)
|
||||
int argc;
|
||||
char *const *argv;
|
||||
const char *options;
|
||||
const struct option *long_options;
|
||||
int *opt_index;
|
||||
{
|
||||
return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
|
||||
}
|
||||
|
||||
/* Like getopt_long, but '-' as well as '--' can indicate a long option.
|
||||
If an option that starts with '-' (not '--') doesn't match a long option,
|
||||
but does match a short option, it is parsed as a short option
|
||||
instead. */
|
||||
|
||||
int
|
||||
getopt_long_only (argc, argv, options, long_options, opt_index)
|
||||
int argc;
|
||||
char *const *argv;
|
||||
const char *options;
|
||||
const struct option *long_options;
|
||||
int *opt_index;
|
||||
{
|
||||
return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
|
||||
}
|
||||
|
||||
|
||||
#endif /* Not ELIDE_CODE. */
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int
|
||||
main (argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
int c;
|
||||
int digit_optind = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
int this_option_optind = optind ? optind : 1;
|
||||
int option_index = 0;
|
||||
static struct option long_options[] =
|
||||
{
|
||||
{"add", 1, 0, 0},
|
||||
{"append", 0, 0, 0},
|
||||
{"delete", 1, 0, 0},
|
||||
{"verbose", 0, 0, 0},
|
||||
{"create", 0, 0, 0},
|
||||
{"file", 1, 0, 0},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
c = getopt_long (argc, argv, "abc:d:0123456789",
|
||||
long_options, &option_index);
|
||||
if (c == -1)
|
||||
break;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case 0:
|
||||
printf ("option %s", long_options[option_index].name);
|
||||
if (optarg)
|
||||
printf (" with arg %s", optarg);
|
||||
printf ("\n");
|
||||
break;
|
||||
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
if (digit_optind != 0 && digit_optind != this_option_optind)
|
||||
printf ("digits occur in two different argv-elements.\n");
|
||||
digit_optind = this_option_optind;
|
||||
printf ("option %c\n", c);
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
printf ("option a\n");
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
printf ("option b\n");
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
printf ("option c with value `%s'\n", optarg);
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
printf ("option d with value `%s'\n", optarg);
|
||||
break;
|
||||
|
||||
case '?':
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("?? getopt returned character code 0%o ??\n", c);
|
||||
}
|
||||
}
|
||||
|
||||
if (optind < argc)
|
||||
{
|
||||
printf ("non-option ARGV-elements: ");
|
||||
while (optind < argc)
|
||||
printf ("%s ", argv[optind++]);
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
exit (0);
|
||||
}
|
||||
|
||||
#endif /* TEST */
|
179
src/sdl/SDL.cpp
179
src/sdl/SDL.cpp
|
@ -40,13 +40,13 @@
|
|||
#include "../Flash.h"
|
||||
#include "../RTC.h"
|
||||
#include "../Sound.h"
|
||||
#include "../Text.h"
|
||||
#include "../Util.h"
|
||||
#include "../gb/gb.h"
|
||||
#include "../gb/gbGlobals.h"
|
||||
|
||||
#include "debugger.h"
|
||||
#include "filters.h"
|
||||
#include "text.h"
|
||||
|
||||
#ifndef _WIN32
|
||||
# include <unistd.h>
|
||||
|
@ -59,24 +59,16 @@
|
|||
#ifndef __GNUC__
|
||||
# define HAVE_DECL_GETOPT 0
|
||||
# define __STDC__ 1
|
||||
# include "../getopt.h"
|
||||
# include "getopt.h"
|
||||
#else // ! __GNUC__
|
||||
# define HAVE_DECL_GETOPT 1
|
||||
# include <getopt.h>
|
||||
#endif // ! __GNUC__
|
||||
|
||||
#ifdef MMX
|
||||
extern "C" bool cpu_mmx;
|
||||
#endif
|
||||
extern bool soundEcho;
|
||||
extern bool soundLowPass;
|
||||
extern bool soundReverse;
|
||||
|
||||
extern void SmartIB(u8*,u32,int,int);
|
||||
extern void SmartIB32(u8*,u32,int,int);
|
||||
extern void MotionBlurIB(u8*,u32,int,int);
|
||||
extern void MotionBlurIB32(u8*,u32,int,int);
|
||||
|
||||
extern void remoteInit();
|
||||
extern void remoteCleanUp();
|
||||
extern void remoteStubMain();
|
||||
|
@ -127,13 +119,12 @@ int desktopHeight = 0;
|
|||
int sensorX = 2047;
|
||||
int sensorY = 2047;
|
||||
|
||||
int filter = (int)kStretch2x;
|
||||
Filter filter = kStretch2x;
|
||||
u8 *delta = NULL;
|
||||
|
||||
int filter_enlarge = 2;
|
||||
|
||||
int sdlPrintUsage = 0;
|
||||
int disableMMX = 0;
|
||||
|
||||
int cartridgeType = 3;
|
||||
int captureFormat = 0;
|
||||
|
@ -150,9 +141,9 @@ int RGB_LOW_BITS_MASK=0x821;
|
|||
u32 systemColorMap32[0x10000];
|
||||
u16 systemColorMap16[0x10000];
|
||||
u16 systemGbPalette[24];
|
||||
FilterFunc filterFunction = NULL;
|
||||
void (*ifbFunction)(u8*,u32,int,int) = NULL;
|
||||
int ifbType = 0;
|
||||
FilterFunc filterFunction = 0;
|
||||
IFBFilterFunc ifbFunction = 0;
|
||||
IFBFilter ifbType = kIFBNone;
|
||||
char filename[2048];
|
||||
char ipsname[2048];
|
||||
char biosFileName[2048];
|
||||
|
@ -160,6 +151,10 @@ char gbBiosFileName[2048];
|
|||
char captureDir[2048];
|
||||
char saveDir[2048];
|
||||
char batteryDir[2048];
|
||||
char* homeDir = NULL;
|
||||
|
||||
// Directory within homedir to use for default save location.
|
||||
#define DOT_DIR ".vbam"
|
||||
|
||||
static char *rewindMemory = NULL;
|
||||
static int rewindPos = 0;
|
||||
|
@ -305,6 +300,7 @@ struct option sdlOptions[] = {
|
|||
{ "config", required_argument, 0, 'c' },
|
||||
{ "debug", no_argument, 0, 'd' },
|
||||
{ "filter", required_argument, 0, 'f' },
|
||||
{ "ifb-filter", required_argument, 0, 'I' },
|
||||
{ "flash-size", required_argument, 0, 'S' },
|
||||
{ "flash-64k", no_argument, &sdlFlashSize, 0 },
|
||||
{ "flash-128k", no_argument, &sdlFlashSize, 1 },
|
||||
|
@ -312,15 +308,11 @@ struct option sdlOptions[] = {
|
|||
{ "fullscreen", no_argument, &fullscreen, 1 },
|
||||
{ "gdb", required_argument, 0, 'G' },
|
||||
{ "help", no_argument, &sdlPrintUsage, 1 },
|
||||
{ "ifb-none", no_argument, &ifbType, 0 },
|
||||
{ "ifb-motion-blur", no_argument, &ifbType, 1 },
|
||||
{ "ifb-smart", no_argument, &ifbType, 2 },
|
||||
{ "ips", required_argument, 0, 'i' },
|
||||
{ "no-agb-print", no_argument, &sdlAgbPrint, 0 },
|
||||
{ "no-auto-frameskip", no_argument, &autoFrameSkip, 0 },
|
||||
{ "no-debug", no_argument, 0, 'N' },
|
||||
{ "no-ips", no_argument, &sdlAutoIPS, 0 },
|
||||
{ "no-mmx", no_argument, &disableMMX, 1 },
|
||||
{ "no-opengl", no_argument, &openGL, 0 },
|
||||
{ "no-pause-when-inactive", no_argument, &pauseWhenInactive, 0 },
|
||||
{ "no-rtc", no_argument, &sdlRtcEnable, 0 },
|
||||
|
@ -434,11 +426,9 @@ FILE *sdlFindFile(const char *name)
|
|||
return f;
|
||||
}
|
||||
|
||||
char *home = getenv("HOME");
|
||||
|
||||
if(home != NULL) {
|
||||
fprintf(stderr, "Searching home directory: %s\n", home);
|
||||
sprintf(path, "%s%c%s", home, FILE_SEP, name);
|
||||
if(homeDir) {
|
||||
fprintf(stderr, "Searching home directory: %s%c%s\n", homeDir, FILE_SEP, DOT_DIR);
|
||||
sprintf(path, "%s%c%s%c%s", homeDir, FILE_SEP, DOT_DIR, FILE_SEP, name);
|
||||
f = fopen(path, "r");
|
||||
if(f != NULL)
|
||||
return f;
|
||||
|
@ -659,9 +649,9 @@ void sdlReadPreferences(FILE *f)
|
|||
} else if(!strcmp(key, "gbBiosFile")) {
|
||||
strcpy(gbBiosFileName, value);
|
||||
} else if(!strcmp(key, "filter")) {
|
||||
filter = sdlFromHex(value);
|
||||
if(filter < 0 || filter > 17)
|
||||
filter = 0;
|
||||
filter = (Filter)sdlFromHex(value);
|
||||
if(filter < kStretch1x || filter >= kInvalidFilter)
|
||||
filter = kStretch2x;
|
||||
} else if(!strcmp(key, "disableStatus")) {
|
||||
disableStatusMessages = sdlFromHex(value) ? true : false;
|
||||
} else if(!strcmp(key, "borderOn")) {
|
||||
|
@ -723,9 +713,9 @@ void sdlReadPreferences(FILE *f)
|
|||
if(sdlFlashSize != 0 && sdlFlashSize != 1)
|
||||
sdlFlashSize = 0;
|
||||
} else if(!strcmp(key, "ifbType")) {
|
||||
ifbType = sdlFromHex(value);
|
||||
if(ifbType < 0 || ifbType > 2)
|
||||
ifbType = 0;
|
||||
ifbType = (IFBFilter)sdlFromHex(value);
|
||||
if(ifbType < kIFBNone || ifbType >= kInvalidIFBFilter)
|
||||
ifbType = kIFBNone;
|
||||
} else if(!strcmp(key, "showSpeed")) {
|
||||
showSpeed = sdlFromHex(value);
|
||||
if(showSpeed < 0 || showSpeed > 2)
|
||||
|
@ -738,10 +728,6 @@ void sdlReadPreferences(FILE *f)
|
|||
throttle = sdlFromHex(value);
|
||||
if(throttle != 0 && (throttle < 5 || throttle > 1000))
|
||||
throttle = 0;
|
||||
} else if(!strcmp(key, "disableMMX")) {
|
||||
#ifdef MMX
|
||||
cpu_mmx = sdlFromHex(value) ? false : true;
|
||||
#endif
|
||||
} else if(!strcmp(key, "pauseWhenInactive")) {
|
||||
pauseWhenInactive = sdlFromHex(value) ? true : false;
|
||||
} else if(!strcmp(key, "agbPrint")) {
|
||||
|
@ -928,26 +914,6 @@ static int sdlCalculateShift(u32 mask)
|
|||
return m-5;
|
||||
}
|
||||
|
||||
static int sdlCalculateMaskWidth(u32 mask)
|
||||
{
|
||||
int m = 0;
|
||||
int mask2 = mask;
|
||||
|
||||
while(mask2) {
|
||||
m++;
|
||||
mask2 >>= 1;
|
||||
}
|
||||
|
||||
int m2 = 0;
|
||||
mask2 = mask;
|
||||
while(!(mask2 & 1)) {
|
||||
m2++;
|
||||
mask2 >>= 1;
|
||||
}
|
||||
|
||||
return m - m2;
|
||||
}
|
||||
|
||||
void sdlWriteState(int num)
|
||||
{
|
||||
char stateName[2048];
|
||||
|
@ -955,6 +921,8 @@ void sdlWriteState(int num)
|
|||
if(saveDir[0])
|
||||
sprintf(stateName, "%s/%s%d.sgm", saveDir, sdlGetFilename(filename),
|
||||
num+1);
|
||||
else if (homeDir)
|
||||
sprintf(stateName, "%s/%s/%s%d.sgm", homeDir, DOT_DIR, sdlGetFilename(filename), num + 1);
|
||||
else
|
||||
sprintf(stateName,"%s%d.sgm", filename, num+1);
|
||||
|
||||
|
@ -974,6 +942,8 @@ void sdlReadState(int num)
|
|||
if(saveDir[0])
|
||||
sprintf(stateName, "%s/%s%d.sgm", saveDir, sdlGetFilename(filename),
|
||||
num+1);
|
||||
else if (homeDir)
|
||||
sprintf(stateName, "%s/%s/%s%d.sgm", homeDir, DOT_DIR, sdlGetFilename(filename), num + 1);
|
||||
else
|
||||
sprintf(stateName,"%s%d.sgm", filename, num+1);
|
||||
|
||||
|
@ -992,6 +962,8 @@ void sdlWriteBattery()
|
|||
|
||||
if(batteryDir[0])
|
||||
sprintf(buffer, "%s/%s.sav", batteryDir, sdlGetFilename(filename));
|
||||
else if (homeDir)
|
||||
sprintf(buffer, "%s/%s/%s.sav", homeDir, DOT_DIR, sdlGetFilename(filename));
|
||||
else
|
||||
sprintf(buffer, "%s.sav", filename);
|
||||
|
||||
|
@ -1006,6 +978,8 @@ void sdlReadBattery()
|
|||
|
||||
if(batteryDir[0])
|
||||
sprintf(buffer, "%s/%s.sav", batteryDir, sdlGetFilename(filename));
|
||||
else if (homeDir)
|
||||
sprintf(buffer, "%s/%s/%s.sav", homeDir, DOT_DIR, sdlGetFilename(filename));
|
||||
else
|
||||
sprintf(buffer, "%s.sav", filename);
|
||||
|
||||
|
@ -1028,7 +1002,7 @@ void sdlInitVideo() {
|
|||
int screenWidth;
|
||||
int screenHeight;
|
||||
|
||||
filter_enlarge = getFilterEnlargeFactor((Filter)filter);
|
||||
filter_enlarge = getFilterEnlargeFactor(filter);
|
||||
destWidth = filter_enlarge * srcWidth;
|
||||
destHeight = filter_enlarge * srcHeight;
|
||||
|
||||
|
@ -1435,13 +1409,12 @@ void sdlPollEvents()
|
|||
filterFunction = 0;
|
||||
while (!filterFunction)
|
||||
{
|
||||
filter += 1;
|
||||
filter %= kInvalidFilter;
|
||||
filterFunction = initFilter((Filter)filter, systemColorDepth, srcWidth);
|
||||
filter = (Filter)((filter + 1) % kInvalidFilter);
|
||||
filterFunction = initFilter(filter, systemColorDepth, srcWidth);
|
||||
}
|
||||
if (getFilterEnlargeFactor((Filter)filter) != filter_enlarge)
|
||||
if (getFilterEnlargeFactor(filter) != filter_enlarge)
|
||||
sdlInitVideo();
|
||||
systemScreenMessage(getFilterName((Filter)filter));
|
||||
systemScreenMessage(getFilterName(filter));
|
||||
}
|
||||
break;
|
||||
case SDLK_F11:
|
||||
|
@ -1550,6 +1523,11 @@ Options:\n\
|
|||
tcp - use TCP at port 55555\n\
|
||||
tcp:PORT - use TCP at port PORT\n\
|
||||
pipe - use pipe transport\n\
|
||||
-I, --ifb-filter=FILTER Select interframe blending filter:\n\
|
||||
");
|
||||
for (int i = 0; i < (int)kInvalidIFBFilter; i++)
|
||||
printf(" %d - %s\n", i, getIFBFilterName((IFBFilter)i));
|
||||
printf("\
|
||||
-N, --no-debug Don't parse debug information\n\
|
||||
-S, --flash-size=SIZE Set the Flash size\n\
|
||||
--flash-64k 0 - 64K Flash\n\
|
||||
|
@ -1589,13 +1567,9 @@ Options:\n\
|
|||
Long options only:\n\
|
||||
--agb-print Enable AGBPrint support\n\
|
||||
--auto-frameskip Enable auto frameskipping\n\
|
||||
--ifb-none No interframe blending\n\
|
||||
--ifb-motion-blur Interframe motion blur\n\
|
||||
--ifb-smart Smart interframe blending\n\
|
||||
--no-agb-print Disable AGBPrint support\n\
|
||||
--no-auto-frameskip Disable auto frameskipping\n\
|
||||
--no-ips Do not apply IPS patch\n\
|
||||
--no-mmx Disable MMX support\n\
|
||||
--no-pause-when-inactive Don't pause when inactive\n\
|
||||
--no-rtc Disable RTC support\n\
|
||||
--no-show-speed Don't show emulation speed\n\
|
||||
|
@ -1625,17 +1599,25 @@ int main(int argc, char **argv)
|
|||
|
||||
parseDebug = true;
|
||||
|
||||
char buf[1024];
|
||||
struct stat s;
|
||||
|
||||
// Get home dir
|
||||
homeDir = getenv("HOME");
|
||||
snprintf(buf, 1024, "%s/%s", homeDir, DOT_DIR);
|
||||
// Make dot dir if not existent
|
||||
if (stat(buf, &s) == -1 || !S_ISDIR(s.st_mode))
|
||||
mkdir(buf, 0755);
|
||||
|
||||
sdlReadPreferences();
|
||||
|
||||
sdlPrintUsage = 0;
|
||||
|
||||
while((op = getopt_long(argc,
|
||||
argv,
|
||||
"FNO:T:Y:G:D:b:c:df:hi:p::s:t:v:1234",
|
||||
"FNO:T:Y:G:I:D:b:c:df:hi:p::s:t:v:",
|
||||
sdlOptions,
|
||||
NULL)) != -1) {
|
||||
if (optarg)
|
||||
optarg++;
|
||||
switch(op) {
|
||||
case 0:
|
||||
// long option already processed by getopt_long
|
||||
|
@ -1717,9 +1699,16 @@ int main(int argc, char **argv)
|
|||
break;
|
||||
case 'f':
|
||||
if(optarg) {
|
||||
filter = atoi(optarg);
|
||||
filter = (Filter)atoi(optarg);
|
||||
} else {
|
||||
filter = 0;
|
||||
filter = kStretch2x;
|
||||
}
|
||||
break;
|
||||
case 'I':
|
||||
if(optarg) {
|
||||
ifbType = (IFBFilter)atoi(optarg);
|
||||
} else {
|
||||
ifbType = kIFBNone;
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
|
@ -1789,11 +1778,6 @@ int main(int argc, char **argv)
|
|||
exit(-1);
|
||||
}
|
||||
|
||||
#ifdef MMX
|
||||
if(disableMMX)
|
||||
cpu_mmx = 0;
|
||||
#endif
|
||||
|
||||
if(rewindTimer)
|
||||
rewindMemory = (char *)malloc(8*REWIND_SIZE);
|
||||
|
||||
|
@ -1968,9 +1952,9 @@ int main(int argc, char **argv)
|
|||
|
||||
sdlInitVideo();
|
||||
|
||||
filterFunction = initFilter((Filter)filter, systemColorDepth, srcWidth);
|
||||
filterFunction = initFilter(filter, systemColorDepth, srcWidth);
|
||||
if (!filterFunction) {
|
||||
fprintf(stderr,"Unable to init filter '%s'\n", getFilterName((Filter)filter));
|
||||
fprintf(stderr,"Unable to init filter '%s'\n", getFilterName(filter));
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
@ -1992,34 +1976,7 @@ int main(int argc, char **argv)
|
|||
memset(delta, 255, 322*242*4);
|
||||
}
|
||||
|
||||
if(systemColorDepth == 16) {
|
||||
switch(ifbType) {
|
||||
case 0:
|
||||
default:
|
||||
ifbFunction = NULL;
|
||||
break;
|
||||
case 1:
|
||||
ifbFunction = MotionBlurIB;
|
||||
break;
|
||||
case 2:
|
||||
ifbFunction = SmartIB;
|
||||
break;
|
||||
}
|
||||
} else if(systemColorDepth == 32) {
|
||||
switch(ifbType) {
|
||||
case 0:
|
||||
default:
|
||||
ifbFunction = NULL;
|
||||
break;
|
||||
case 1:
|
||||
ifbFunction = MotionBlurIB32;
|
||||
break;
|
||||
case 2:
|
||||
ifbFunction = SmartIB32;
|
||||
break;
|
||||
}
|
||||
} else
|
||||
ifbFunction = NULL;
|
||||
ifbFunction = initIFBFilter(ifbType, systemColorDepth);
|
||||
|
||||
emulating = 1;
|
||||
renderedFrames = 0;
|
||||
|
@ -2120,7 +2077,7 @@ void drawScreenMessage(u8 *screen, int pitch, int x, int y, unsigned int duratio
|
|||
if(((systemGetClock() - screenMessageTime) < duration) &&
|
||||
!disableStatusMessages) {
|
||||
drawText(screen, pitch, x, y,
|
||||
screenMessageBuffer);
|
||||
screenMessageBuffer, false);
|
||||
} else {
|
||||
screenMessage = false;
|
||||
}
|
||||
|
@ -2136,10 +2093,8 @@ void drawSpeed(u8 *screen, int pitch, int x, int y)
|
|||
sprintf(buffer, "%3d%%(%d, %d fps)", systemSpeed,
|
||||
systemFrameSkip,
|
||||
showRenderedFrames);
|
||||
if(showSpeedTransparent)
|
||||
drawTextTransp(screen, pitch, x, y, buffer);
|
||||
else
|
||||
drawText(screen, pitch, x, y, buffer);
|
||||
|
||||
drawText(screen, pitch, x, y, buffer, showSpeedTransparent);
|
||||
}
|
||||
|
||||
void systemDrawScreen()
|
||||
|
@ -2348,6 +2303,8 @@ void systemScreenCapture(int a)
|
|||
if(captureFormat) {
|
||||
if(captureDir[0])
|
||||
sprintf(buffer, "%s/%s%02d.bmp", captureDir, sdlGetFilename(filename), a);
|
||||
else if (homeDir)
|
||||
sprintf(buffer, "%s/%s/%s%02d.bmp", homeDir, DOT_DIR, sdlGetFilename(filename), a);
|
||||
else
|
||||
sprintf(buffer, "%s%02d.bmp", filename, a);
|
||||
|
||||
|
@ -2355,6 +2312,8 @@ void systemScreenCapture(int a)
|
|||
} else {
|
||||
if(captureDir[0])
|
||||
sprintf(buffer, "%s/%s%02d.png", captureDir, sdlGetFilename(filename), a);
|
||||
else if (homeDir)
|
||||
sprintf(buffer, "%s/%s/%s%02d.png", homeDir, DOT_DIR, sdlGetFilename(filename), a);
|
||||
else
|
||||
sprintf(buffer, "%s%02d.png", filename, a);
|
||||
emulator.emuWritePNG(buffer);
|
||||
|
@ -2602,5 +2561,5 @@ void systemGbBorderOn()
|
|||
|
||||
sdlInitVideo();
|
||||
|
||||
filterFunction = initFilter((Filter)filter, systemColorDepth, srcWidth);
|
||||
filterFunction = initFilter(filter, systemColorDepth, srcWidth);
|
||||
}
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
|
||||
#include "filters.h"
|
||||
|
||||
//
|
||||
// Screen filters
|
||||
//
|
||||
|
||||
extern int Init_2xSaI(u32);
|
||||
extern void hq2x_init(unsigned);
|
||||
extern bool sdlStretchInit(int colorDepth, int sizeMultiplier, int srcWidth);
|
||||
|
@ -143,6 +147,57 @@ FilterFunc initFilter(const Filter f, const int colorDepth, const int srcWidth)
|
|||
return func;
|
||||
}
|
||||
|
||||
//
|
||||
// Interframe blending filters
|
||||
//
|
||||
|
||||
extern void SmartIB(u8*,u32,int,int);
|
||||
extern void SmartIB32(u8*,u32,int,int);
|
||||
extern void MotionBlurIB(u8*,u32,int,int);
|
||||
extern void MotionBlurIB32(u8*,u32,int,int);
|
||||
|
||||
struct IFBFilterDesc {
|
||||
char name[30];
|
||||
IFBFilterFunc func16;
|
||||
IFBFilterFunc func32;
|
||||
};
|
||||
|
||||
const IFBFilterDesc IFBFilters[] = {
|
||||
{ "No interframe blending", 0, 0 },
|
||||
{ "Interframe motion blur", MotionBlurIB, MotionBlurIB32 },
|
||||
{ "Smart interframe blending", SmartIB, SmartIB32 }
|
||||
};
|
||||
|
||||
IFBFilterFunc initIFBFilter(const IFBFilter f, const int colorDepth)
|
||||
{
|
||||
IFBFilterFunc func;
|
||||
|
||||
switch (colorDepth) {
|
||||
case 15:
|
||||
case 16:
|
||||
func = IFBFilters[f].func16;
|
||||
break;
|
||||
case 32:
|
||||
func = IFBFilters[f].func32;
|
||||
break;
|
||||
case 24:
|
||||
default:
|
||||
func = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return func;
|
||||
}
|
||||
|
||||
char* getIFBFilterName(const IFBFilter f)
|
||||
{
|
||||
return (char*)IFBFilters[f].name;
|
||||
}
|
||||
|
||||
//
|
||||
// Optimized stretchers implementation
|
||||
//
|
||||
|
||||
#ifndef C_CORE
|
||||
u8 sdlStretcher[16384];
|
||||
|
||||
|
|
|
@ -21,6 +21,10 @@
|
|||
|
||||
#include "../System.h"
|
||||
|
||||
//
|
||||
// Screen filters
|
||||
//
|
||||
|
||||
// List of available filters
|
||||
enum Filter { kStretch1x, kStretch2x, k2xSaI, kSuper2xSaI, kSuperEagle, kPixelate,
|
||||
kAdMame2x, kBilinear, kBilinearPlus, kScanlines, kScanlinesTV,
|
||||
|
@ -38,4 +42,20 @@ int getFilterEnlargeFactor(const Filter f);
|
|||
// Get the display name for a filter
|
||||
char* getFilterName(const Filter f);
|
||||
|
||||
//
|
||||
// Interframe filters
|
||||
//
|
||||
|
||||
// List of available IFB filters
|
||||
enum IFBFilter { kIFBNone, kIBMotionBlur, kIBSmart, kInvalidIFBFilter };
|
||||
|
||||
// Function pointer type for an IFB filter function
|
||||
typedef void(*IFBFilterFunc)(u8*, u32, int, int);
|
||||
|
||||
// Initialize an IFB filter and get the corresponding filter function pointer
|
||||
IFBFilterFunc initIFBFilter(const IFBFilter f, const int colorDepth);
|
||||
|
||||
// Get the display name for an IFB filter
|
||||
char* getIFBFilterName(const IFBFilter f);
|
||||
|
||||
#endif // VBA_SDL_FILTERS_H
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include "../System.h"
|
||||
#include "../GBA.h"
|
||||
#include "../Globals.h"
|
||||
#include "../Text.h"
|
||||
#include "../Util.h"
|
||||
#include "../gb/gbGlobals.h"
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
#include "../System.h"
|
||||
#include "../GBA.h"
|
||||
#include "../Globals.h"
|
||||
#include "../Text.h"
|
||||
#include "../Util.h"
|
||||
#include "../gb/gbGlobals.h"
|
||||
#include "..\memgzio.h"
|
||||
|
@ -330,7 +329,7 @@ void OpenGLDisplay::clear()
|
|||
//dlist
|
||||
void OpenGLDisplay::renderlist()
|
||||
{
|
||||
displaylist = glGenLists(1); //set the cube list to Generate a List
|
||||
displaylist = glGenLists(1); //Generate a List
|
||||
glNewList(displaylist,GL_COMPILE); //compile the new list
|
||||
glBegin( GL_QUADS );
|
||||
|
||||
|
|
Loading…
Reference in New Issue