brijohn / gnuboy-ex Goto Github PK
View Code? Open in Web Editor NEWPort of gnuboy, a Gameboy Color emulator, for CASIO EX-Word electronic dictionaries.
License: GNU General Public License v2.0
Port of gnuboy, a Gameboy Color emulator, for CASIO EX-Word electronic dictionaries.
License: GNU General Public License v2.0
GNUBOY README INTRO Welcome to gnuboy, one of the few pieces of Free Software to emulate the Game Boy handheld game console. Written in ANSI C with a few optional assembler optimizations for particular cpus, gnuboy supports a wide range of host systems, and has been tested successfully on: GNU/Linux FreeBSD OpenBSD BeOS Linux/390 (IBM S/390 Mainframe) SunOS/Sun Ultra60 IRIX/SGI O2 IRIX/SGI Indy AIX/Unknown DR-DOS MS-DOS Windows DOS box Windows 9x/NT/2k Additionally, gnuboy should run on any other *nix variants that have ANSI C compilers and that are remotely POSIX compliant. As gnuboy is Free Software, you're welcome to fix any problems you encounter building it for a particular system, or to port it to entirely new systems. EMULATION gnuboy emulates nearly all aspects of the (Color) Gameboy, including all of the following and much more: Full GBZ80 instruction set. Scanline-based LCD engine. Ten sprites per scanline limit. Support for all CGB graphics extensions. Sprite DMA, HDMA, and GDMA. All four sound channels including digital samples. MBC1, MBC2, MBC3 (including clock), and MBC5 mappers. Wave pattern memory corruption when sound channel 3 is played. Pad, timer, divide counter, and other basic hardware registers. CGB double-speed CPU mode. Sorting sprites by X coordinate in DMG mode. HALT instruction skipping in DMG mode. CPU stalls during HDMA and GDMA. Configurable color filters to provide more authentic LCD look. Aspects not emulated at this time include: * Serial IO (link cable). Undocumented 'extra' ram in OAM space on Gameboy Color. * All Super Gameboy extensions. * GBC, HuC1, and HuC3 IR ports. * Obscure mappers such as TAMA5. Only the ones marked by * are known to affect the playability of actual games or demos; the rest are just listed for completeness' sake. FEATURES In addition to basic emulation, gnuboy provides the following features: Highly flexible keybinding and configuration subsystem. State saving and loading at any point. Very precise timing/synchronization, preserved across save/load. Joystick support on Linux, DOS, and all SDL-based ports. Fully customizable palettes for DMG games. Screen scaling by a factor of 2, 3, or 4 in all ports. Hardware-based screen scaling on platforms where it's available. Debug traces to stdout. Dynamic palette allocation when run in 256-color modes... OR simulated 3/3/2 bits per channel in 256-color modes. For information on configuring and using these features, see the additional documentation in the "docs" directory. COMPATIBILITY Out of over 300 results reported by testers, all games are known to work perfectly on gnuboy with the following exceptions: Fighting Phoenix (Japanese) may or may not work since it uses the HuC1 memory controller, which is not implemented properly. There has been no report either way so far. Pocket Bomberman (Japanese version, which uses HuC1) runs, but can be made to crash if the player jumps into the ceiling in the first level. It's not clear whether this bug is MBC-related, something else, or an actual bug in the original game. Monster Go! Go! Go! (Japanese) is unplayable. The cause of the problem is not fully known, but it's either a very bad dump or it's using some sort of specialized MBC that's not documented. Final Fantasy Adventure has visual problems with the fade between screens. Does not affect gameplay. Bubble Bobble 2 has some minor tile glitches right before gameplay actually begins. Cause unknown. Does not affect gameplay. Alone in the Dark is reported to have minor visual glitches. I haven't seen it myself so I can't judge their severity. Both new Zelda games are reported to have a visual glitch at the beginning of the game, and on certain other screens. I haven't seen the problem myself, but supposedly it impacts gameplay to some extent. Please report any other incompatibilities discovered directly to [email protected], so that they can be documented and hopefully fixed. FUTURE / WISHLIST Here's a brief list of what may appear in gnuboy in the future: Screenshots. Integrated debugger. Super Gameboy support. Serial link over the internet. Serial link to a real Gameboy with a custom cable. Custom colorization of DMG games on a per-tile basis. Support for more colorspaces in the hardware scaler. Recording audio. GBS player built from the same source tree. Full recording and playback of emulation. So-called "high level emulation" of certain typical dumb loops. Features that are not likely to appear soon or at all include: Rumble support - this would be nice, but SDL doesn't seem to support force-feedback yet. We'll see about it in the long-term though. Eagle/2xSaI/etc. - probably not feasible since these libraries don't appear to be compatible with the terms of the GPL. We might work on our own interpolation engine eventually, but that's low priority. GUI/GUI-like features - such things are best handled by external front-ends. We might eventually add a mechanism for external programs to communicate with gnuboy and reconfigure it while it's running, however. Plugins - NO! The way I see it, plugins are just an attempt to work around the GPL. In any case, even if you are adding plugin support yourself, you are bound by the terms of the GPL when linking ANY code to gnuboy, including dynamic-linked modules. However we'd rather not deal with this mess to begin with. Compressed ROMs/Saves - this one is very iffy. On most systems, this is redundant; *nix users can just pipe the rom through a decompression program, and Windows users can just double-click or drag files from their favorite GUI unzipper program. Linking to zlib isn't really acceptable since it's massively bloated and we don't want to include it with gnuboy or add external dependencies. We may, however, write our own tiny decompressor to use at some point. Ideas and suggestions for other features are welcome, but won't necessarily be used. You're of course also free to add features yourself, and if they fit well into the main tree they may eventually get included in the official release. See the file HACKING for more details on modifying and/or contributing. THANKS Thanks goes out to everyone who's expressed interest in gnuboy by writing -- users, porters, authors of other emulators, and so forth. Apologies if we don't get a personal response out to everyone, but either way, consider your feedback appreciated. EPILOGUE OK, that looks like about it. More to come, stick around... -Laguna <[email protected]>
I compiled these sources and generated binaries rightly.I'll trying to install exword devices(XD-N4800,Japanese model).I'm tried to install using libexword,But I couldn't find how to install this binaries.So how do I install those binaries to dictionary? I would be pleased if you could tell me.
toor@Computer ~ $ git clone https://github.com/brijohn/gnuboy-ex.git
Cloning into 'gnuboy-ex'...
remote: Enumerating objects: 154, done.
remote: Total 154 (delta 0), reused 0 (delta 0), pack-reused 154
Receiving objects: 100% (154/154), 401.34 KiB | 193.00 KiB/s, done.
Resolving deltas: 100% (41/41), done.
toor@Computer ~ $ cd gnuboy-ex
toor@Computer ~/gnuboy-ex $ export DEVKITSH4=/usr/devkitSH4
toor@Computer ~/gnuboy-ex $ make
path.c
fastmem.c
emu.c
rccmds.c
hw.c
lcd.c
src/lcd.c: In function 'lcd_refreshline':
src/lcd.c:764:14: warning: passing argument 1 of 'refresh_2' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_2(dest, BUF, PAL2, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:90:22: note: expected 'un16 *' {aka 'short unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_2(un16 *dest, byte *src, un16 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:770:14: warning: passing argument 1 of 'refresh_4' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_4(dest, BUF, PAL4, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:92:22: note: expected 'un32 *' {aka 'unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_4(un32 *dest, byte *src, un32 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:778:14: warning: passing argument 1 of 'refresh_2' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_2(dest, BUF, PAL2, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:90:22: note: expected 'un16 *' {aka 'short unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_2(un16 *dest, byte *src, un16 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:781:14: warning: passing argument 1 of 'refresh_4' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_4(dest, BUF, PAL4, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:92:22: note: expected 'un32 *' {aka 'unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_4(un32 *dest, byte *src, un32 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:787:17: warning: passing argument 1 of 'refresh_4_2x' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_4_2x(dest, BUF, PAL4, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:97:25: note: expected 'un32 *' {aka 'unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_4_2x(un32 *dest, byte *src, un32 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:798:17: warning: passing argument 1 of 'refresh_2_3x' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_2_3x(dest, BUF, PAL2, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:93:25: note: expected 'un16 *' {aka 'short unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_2_3x(un16 *dest, byte *src, un16 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:804:17: warning: passing argument 1 of 'refresh_4_3x' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_4_3x(dest, BUF, PAL4, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:98:25: note: expected 'un32 *' {aka 'unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_4_3x(un32 *dest, byte *src, un32 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:812:14: warning: passing argument 1 of 'refresh_4' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_4(dest, BUF, PAL4, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:92:22: note: expected 'un32 *' {aka 'unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_4(un32 *dest, byte *src, un32 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:815:17: warning: passing argument 1 of 'refresh_4_2x' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_4_2x(dest, BUF, PAL4, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:97:25: note: expected 'un32 *' {aka 'unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_4_2x(un32 *dest, byte *src, un32 *pal, int cnt);
~~~~~~^~~~
src/lcd.c:821:17: warning: passing argument 1 of 'refresh_4_4x' from incompatible pointer type [-Wincompatible-pointer-types]
refresh_4_4x(dest, BUF, PAL4, 160);
^~~~
In file included from src/lcd.c:3:
src/gnuboy.h:99:25: note: expected 'un32 *' {aka 'unsigned int *'} but argument is of type 'byte *' {aka 'unsigned char *'}
void refresh_4_4x(un32 *dest, byte *src, un32 *pal, int cnt);
~~~~~~^~~~
rtc.c
split.c
events.c
exports.c
mem.c
palette.c
src/palette.c: In function 'bestmatch':
src/palette.c:45:9: warning: implicit declaration of function 'abs' [-Wimplicit-function-declaration]
err = abs(r-r2) + abs(b-b2) + abs(g-g2);
^~~
save.c
cpu.c
keytable.c
debug.c
rcfile.c
refresh.c
sound.c
rckeys.c
rcvars.c
src/rcvars.c: In function 'my_atoi':
src/rcvars.c:60:9: warning: implicit declaration of function 'isdigit'; did you mean 'vid_init'? [-Wimplicit-function-declaration]
if (isdigit(*s))
^~~~~~~
vid_init
lcdc.c
video.c
src/sys/video.c:4:10: fatal error: graphics/lcdc.h: No such file or directory
#include <graphics/lcdc.h>
^~~~~~~~~~~~~~~~~
compilation terminated.
/usr/devkitSH4/exword_rules:43: recipe for target 'src/sys/video.o' failed
make: *** [src/sys/video.o] Error 1
Hi!
I’m looking at the document called “hacking” in this project. And it said there is a file called “install”.
But I can’t find it where it is? Where is the document called “install”?
I’m waiting for your reply.
I'm not sure whether I'm doing something wrong with the build or installation, but I cannot make this run on my DataPlus 6. The build is working; then, to install:
build/ja
connect
dict reset dg
dict install GNUBY
exit
Then, on the device, I press the rightmost function key twice to get to the options screen, select the top-left icon (which Google Translate describes as 'Body Preservation'), then select the Gnuboy EX item. After a second or so it drops back to the options screen. I've tried adjusting the code, like inserting a null-pointer dereference right at the beginning of main()
, but nothing happens. I suspect that it's not even trying to run the binary.
I've also tried registering the application as a favourite. This works, but when trying to select the item from the favourites menu (one press of the rightmost function key) I get a complaint that the SD card with the item on it isn't installed.
Am I doing anything obviously wrong?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.