diff --git a/data/common/emul/pokemini b/data/common/emul/pokemini
new file mode 100644
index 0000000000..76c9d0995b
Binary files /dev/null and b/data/common/emul/pokemini differ
diff --git a/programs/emulator/pokemini/Makefile b/programs/emulator/pokemini/Makefile
new file mode 100644
index 0000000000..288702e65e
--- /dev/null
+++ b/programs/emulator/pokemini/Makefile
@@ -0,0 +1,15 @@
+OUTFILE = pokemini
+OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5) $(OBJS6) $(OBJS7) $(OBJS8) $(OBJS9)
+OBJS1 = PokeMini_SDL.o ../../sourcex/KeybMapSDL.o ../../sourcex/ExportBMP.o ../../sourcex/ExportWAV.o ../../source/PMCommon.o ../../source/PokeMini.o
+OBJS2 = ../../source/Multicart.o ../../source/Hardware.o ../../source/Video.o ../../source/Video_x1.o ../../source/Video_x2.o ../../source/Video_x3.o
+OBJS3 = ../../source/Video_x4.o ../../source/Video_x5.o ../../source/Video_x6.o ../../source/CommandLine.o ../../source/MinxCPU.o
+OBJS4 = ../../source/MinxCPU_XX.o ../../source/MinxCPU_CE.o ../../source/MinxCPU_CF.o ../../source/MinxCPU_SP.o ../../source/MinxTimers.o
+OBJS5 = ../../source/MinxIO.o ../../source/MinxIRQ.o ../../source/MinxPRC.o ../../source/MinxColorPRC.o ../../source/MinxLCD.o
+OBJS6 = ../../source/MinxAudio.o ../../source/UI.o ../../source/Joystick.o ../../source/Keyboard.o
+OBJS7 = ../../resource/PokeMini_ColorPal.o ../../resource/PokeMini_Font12.o ../../resource/PokeMini_Icons12.o ../../resource/PokeMini_BG2.o
+OBJS8 = ../../resource/PokeMini_BG3.o ../../resource/PokeMini_BG4.o ../../resource/PokeMini_BG5.o ../../resource/PokeMini_BG6.o
+OBJS9 = ./freebios/freebios.o
+
+CFLAGS = -Os -fomit-frame-pointer -DPERFORMANCE -DNO_ZIP -DNO_SCANDIRS -I$(MENUETDEV)/include/SDL -I./ -I./../../source -I./../../sourcex -I./../../resource -I../../dependencies/minizip -I../../freebios
+LIBS = -lSDL -lm
+include $(MENUETDEV)/makefiles/Makefile_for_program
diff --git a/programs/emulator/pokemini/PokeMini_SDL.c b/programs/emulator/pokemini/PokeMini_SDL.c
new file mode 100644
index 0000000000..096edf264f
--- /dev/null
+++ b/programs/emulator/pokemini/PokeMini_SDL.c
@@ -0,0 +1,527 @@
+/*
+ PokeMini - Pokémon-Mini Emulator
+ Copyright (C) 2009-2015 JustBurn
+
+ 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 3 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, see .
+*/
+
+#include
+#include
+#include
+#include
+#include "SDL.h"
+
+#include "PokeMini.h"
+#include "Hardware.h"
+#include "ExportBMP.h"
+#include "ExportWAV.h"
+#include "Keyboard.h"
+#include "KeybMapSDL.h"
+
+#include "Video_x1.h"
+#include "Video_x2.h"
+#include "Video_x3.h"
+#include "Video_x4.h"
+#include "Video_x5.h"
+#include "Video_x6.h"
+#include "PokeMini_BG2.h"
+#include "PokeMini_BG3.h"
+#include "PokeMini_BG4.h"
+#include "PokeMini_BG5.h"
+#include "PokeMini_BG6.h"
+
+const char *AppName = "PokeMini " PokeMini_Version " SDL";
+
+int emurunning = 1, emulimiter = 1;
+SDL_Surface *screen;
+int PMWidth, PMHeight;
+int PixPitch, PMOff, UIOff;
+
+FILE *sdump;
+void setup_screen();
+
+// Sound buffer size
+#define SOUNDBUFFER 512
+#define PMSNDBUFFER (SOUNDBUFFER*2)
+
+const char *clc_zoom_txt[] = {
+ "0x (Illegal)",
+ "1x ( 96x 64)",
+ "2x (192x128)",
+ "3x (288x192)",
+ "4x (384x256)",
+ "5x (480x320)",
+ "6x (576x384)",
+};
+
+// Custom command line (NEW IN 0.5.0)
+int clc_zoom = 6, clc_bpp = 16, clc_fullscreen = 0;
+char clc_dump_sound[PMTMPV] = {0};
+int clc_displayfps = 0;
+const TCommandLineCustom CustomArgs[] = {
+ { "-dumpsound", (int *)&clc_dump_sound, COMMANDLINE_STR, PMTMPV-1 },
+ { "-zoom", &clc_zoom, COMMANDLINE_INT, 1, 6 },
+ { "-bpp", &clc_bpp, COMMANDLINE_INT, 16, 32 },
+ { "-windowed", &clc_fullscreen, COMMANDLINE_INTSET, 0 },
+ { "-fullscreen", &clc_fullscreen, COMMANDLINE_INTSET, 1 },
+ { "-displayfps", &clc_displayfps, COMMANDLINE_INTSET, 1 },
+ { "", NULL, COMMANDLINE_EOL }
+};
+const TCommandLineCustom CustomConf[] = {
+ { "zoom", &clc_zoom, COMMANDLINE_INT, 1, 6 },
+ { "bpp", &clc_bpp, COMMANDLINE_INT, 16, 32 },
+ { "fullscreen", &clc_fullscreen, COMMANDLINE_BOOL },
+ { "displayfps", &clc_displayfps, COMMANDLINE_BOOL },
+ { "", NULL, COMMANDLINE_EOL }
+};
+
+// Platform menu (REQUIRED >= 0.4.4)
+int UIItems_PlatformC(int index, int reason);
+TUIMenu_Item UIItems_Platform[] = {
+ PLATFORMDEF_GOBACK,
+ { 0, 1, "Zoom: %s", UIItems_PlatformC },
+ { 0, 2, "Depth: %dbpp", UIItems_PlatformC },
+ /*{ 0, 3, "Fullscreen: %s", UIItems_PlatformC },*/
+ { 0, 4, "Display FPS: %s", UIItems_PlatformC },
+ { 0, 9, "Define Keyboard...", UIItems_PlatformC },
+ PLATFORMDEF_SAVEOPTIONS,
+ PLATFORMDEF_END(UIItems_PlatformC)
+};
+int UIItems_PlatformC(int index, int reason)
+{
+ int zoomchanged = 0;
+ if (reason == UIMENU_OK) {
+ reason = UIMENU_RIGHT;
+ }
+ if (reason == UIMENU_CANCEL) {
+ UIMenu_PrevMenu();
+ }
+ if (reason == UIMENU_LEFT) {
+ switch (index) {
+ case 1: // Zoom
+ clc_zoom--;
+ if (clc_zoom < 1) clc_zoom = 6;
+ zoomchanged = 1;
+ break;
+ case 2: // Bits-Per-Pixel
+ if (clc_bpp == 32)
+ clc_bpp = 16;
+ else
+ clc_bpp = 32;
+ zoomchanged = 1;
+ break;
+ case 3: // Fullscreen
+ clc_fullscreen = !clc_fullscreen;
+ zoomchanged = 1;
+ break;
+ case 4: // Display FPS
+ clc_displayfps = !clc_displayfps;
+ break;
+ }
+ }
+ if (reason == UIMENU_RIGHT) {
+ switch (index) {
+ case 1: // Zoom
+ clc_zoom++;
+ if (clc_zoom > 6) clc_zoom = 1;
+ zoomchanged = 1;
+ break;
+ case 2: // Bits-Per-Pixel
+ if (clc_bpp == 16)
+ clc_bpp = 32;
+ else
+ clc_bpp = 16;
+ zoomchanged = 1;
+ break;
+ case 3: // Fullscreen
+ clc_fullscreen = !clc_fullscreen;
+ zoomchanged = 1;
+ break;
+ case 4: // Display FPS
+ clc_displayfps = !clc_displayfps;
+ break;
+ break;
+ case 9: // Define Keyboard...
+ KeyboardEnterMenu();
+ break;
+ }
+ }
+ UIMenu_ChangeItem(UIItems_Platform, 1, "Zoom: %s", clc_zoom_txt[clc_zoom]);
+ UIMenu_ChangeItem(UIItems_Platform, 2, "Depth: %dbpp", clc_bpp);
+ UIMenu_ChangeItem(UIItems_Platform, 3, "Fullscreen: %s", clc_fullscreen ? "Yes" : "No");
+ UIMenu_ChangeItem(UIItems_Platform, 4, "Display FPS: %s", clc_displayfps ? "Yes" : "No");
+ if (zoomchanged) {
+ SDL_UnlockSurface(screen);
+ setup_screen();
+ SDL_LockSurface(screen);
+ return 0;
+ }
+ return 1;
+}
+
+// Setup screen
+void setup_screen()
+{
+ TPokeMini_VideoSpec *videospec;
+ int depth, PMOffX, PMOffY, UIOffX, UIOffY;
+
+ // Calculate size based of zoom
+ if (clc_zoom == 1) {
+ videospec = (TPokeMini_VideoSpec *)&PokeMini_Video1x1;
+ PMWidth = 192; PMHeight = 128; PMOffX = 48; PMOffY = 32; UIOffX = 0; UIOffY = 0;
+ UIMenu_SetDisplay(192, 128, PokeMini_BGR16, (uint8_t *)PokeMini_BG2, (uint16_t *)PokeMini_BG2_PalBGR16, (uint32_t *)PokeMini_BG2_PalBGR32);
+ } else if (clc_zoom == 2) {
+ videospec = (TPokeMini_VideoSpec *)&PokeMini_Video2x2;
+ PMWidth = 208; PMHeight = 144; PMOffX = 8; PMOffY = 8; UIOffX = 8; UIOffY = 8;
+ UIMenu_SetDisplay(192, 128, PokeMini_BGR16, (uint8_t *)PokeMini_BG2, (uint16_t *)PokeMini_BG2_PalBGR16, (uint32_t *)PokeMini_BG2_PalBGR32);
+ } else if (clc_zoom == 3) {
+ videospec = (TPokeMini_VideoSpec *)&PokeMini_Video3x3;
+ PMWidth = 304; PMHeight = 208; PMOffX = 8; PMOffY = 8; UIOffX = 8; UIOffY = 8;
+ UIMenu_SetDisplay(288, 192, PokeMini_BGR16, (uint8_t *)PokeMini_BG3, (uint16_t *)PokeMini_BG3_PalBGR16, (uint32_t *)PokeMini_BG3_PalBGR32);
+ } else if (clc_zoom == 4) {
+ videospec = (TPokeMini_VideoSpec *)&PokeMini_Video4x4;
+ PMWidth = 400; PMHeight = 272; PMOffX = 8; PMOffY = 8; UIOffX = 8; UIOffY = 8;
+ UIMenu_SetDisplay(384, 256, PokeMini_BGR16, (uint8_t *)PokeMini_BG4, (uint16_t *)PokeMini_BG4_PalBGR16, (uint32_t *)PokeMini_BG4_PalBGR32);
+ } else if (clc_zoom == 5) {
+ videospec = (TPokeMini_VideoSpec *)&PokeMini_Video5x5;
+ PMWidth = 496; PMHeight = 336; PMOffX = 8; PMOffY = 8; UIOffX = 8; UIOffY = 8;
+ UIMenu_SetDisplay(480, 320, PokeMini_BGR16, (uint8_t *)PokeMini_BG5, (uint16_t *)PokeMini_BG5_PalBGR16, (uint32_t *)PokeMini_BG5_PalBGR32);
+ } else {
+ videospec = (TPokeMini_VideoSpec *)&PokeMini_Video6x6;
+ PMWidth = 592; PMHeight = 400; PMOffX = 8; PMOffY = 8; UIOffX = 8; UIOffY = 8;
+ UIMenu_SetDisplay(576, 384, PokeMini_BGR16, (uint8_t *)PokeMini_BG6, (uint16_t *)PokeMini_BG6_PalBGR16, (uint32_t *)PokeMini_BG6_PalBGR32);
+ }
+
+ // Set video spec and check if is supported
+ depth = PokeMini_SetVideo(videospec, clc_bpp, CommandLine.lcdfilter, CommandLine.lcdmode);
+ if (!depth) {
+ fprintf(stderr, "Couldn't set video spec from %i bpp\n", clc_bpp);
+ exit(1);
+ }
+
+ // Set video mode
+ screen = SDL_SetVideoMode(PMWidth, PMHeight, depth, SDL_HWSURFACE | SDL_DOUBLEBUF | (clc_fullscreen ? SDL_FULLSCREEN : 0));
+ if (screen == NULL) {
+ fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError());
+ exit(1);
+ }
+
+ // Calculate pitch and offset
+ if (depth == 32) {
+ PixPitch = screen->pitch / 4;
+ PMOff = (PMOffY * screen->pitch) + (PMOffX * 4);
+ UIOff = (UIOffY * screen->pitch) + (UIOffX * 4);
+ } else {
+ PixPitch = screen->pitch / 2;
+ PMOff = (PMOffY * screen->pitch) + (PMOffX * 2);
+ UIOff = (UIOffY * screen->pitch) + (UIOffX * 2);
+ }
+ clc_bpp = depth;
+}
+
+// Capture screen
+void capture_screen()
+{
+ FILE *capf;
+ int y, capnum;
+ unsigned long Video[96*64];
+ PokeMini_VideoPreview_32((uint32_t *)Video, 96, PokeMini_LCDMode);
+ capf = OpenUnique_ExportBMP(&capnum, 96, 64);
+ if (!capf) {
+ fprintf(stderr, "Error while saving capture\n");
+ return;
+ }
+ for (y=0; y<64; y++) {
+ WriteArray_ExportBMP(capf, (uint32_t *)&Video[(63-y) * 96], 96);
+ }
+ printf("Capture saved at 'snap_%03d.bmp'\n", capnum);
+ Close_ExportBMP(capf);
+}
+
+// Handle keyboard and quit events
+void handleevents(SDL_Event *event)
+{
+ switch (event->type) {
+ case SDL_KEYDOWN:
+ if (event->key.keysym.sym == SDLK_F9) { // Capture screen
+ capture_screen();
+ } else if (event->key.keysym.sym == SDLK_F4) { // Emulator Exit
+ if (event->key.keysym.mod & KMOD_ALT) {
+ emurunning = 0;
+ }
+ } else if (event->key.keysym.sym == SDLK_F10) { // Fullscreen/Window
+ clc_fullscreen = !clc_fullscreen;
+ setup_screen();
+ UIItems_PlatformC(0, UIMENU_LOAD);
+ } else if (event->key.keysym.sym == SDLK_F11) { // Disable speed throttling
+ emulimiter = !emulimiter;
+ } else if (event->key.keysym.sym == SDLK_TAB) { // Temp disable speed throttling
+ emulimiter = 0;
+ } else {
+ KeyboardPressEvent(event->key.keysym.sym);
+ }
+ break;
+ case SDL_KEYUP:
+ if (event->key.keysym.sym == SDLK_TAB) { // Speed threhold
+ emulimiter = 1;
+ } else {
+ KeyboardReleaseEvent(event->key.keysym.sym);
+ }
+ break;
+ case SDL_QUIT:
+ emurunning = 0;
+ break;
+ };
+}
+
+// Used to fill the sound buffer
+void emulatorsound(void *unused, Uint8 *stream, int len)
+{
+ MinxAudio_GetSamplesU8(stream, len);
+ if (clc_dump_sound[0]) WriteU8A_ExportWAV(sdump, stream, len>>1);
+}
+
+// Enable / Disable sound
+void enablesound(int sound)
+{
+ MinxAudio_ChangeEngine(sound);
+ if (AudioEnabled) SDL_PauseAudio(!sound);
+}
+
+// Menu loop
+void menuloop()
+{
+ SDL_Event event;
+
+ // Update window's title and stop sound
+ SDL_WM_SetCaption(AppName, "PMEWindow");
+ SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
+ enablesound(0);
+
+ // Update EEPROM
+ PokeMini_SaveFromCommandLines(0);
+
+ // Menu's loop
+ while (emurunning && (UI_Status == UI_STATUS_MENU)) {
+ // Slowdown to approx. 60fps
+ SDL_Delay(1);
+
+ // Process UI
+ UIMenu_Process();
+
+ // Screen rendering
+ SDL_FillRect(screen, NULL, 0);
+ if (SDL_LockSurface(screen) == 0) {
+ // Render the menu or the game screen
+ if (PokeMini_VideoDepth == 32)
+ UIMenu_Display_32((uint32_t *)((uint8_t *)screen->pixels + UIOff), PixPitch);
+ else
+ UIMenu_Display_16((uint16_t *)((uint8_t *)screen->pixels + UIOff), PixPitch);
+
+ // Unlock surface
+ SDL_UnlockSurface(screen);
+ SDL_Flip(screen);
+ }
+
+ // Handle events
+ while (SDL_PollEvent(&event)) handleevents(&event);
+ }
+
+ // Apply configs
+ PokeMini_ApplyChanges();
+ if (UI_Status == UI_STATUS_EXIT) emurunning = 0;
+ else
+ {
+ if (CommandLine.sound == MINX_AUDIO_GENERATED)
+ enablesound(MINX_AUDIO_GENERATED);
+ else
+ enablesound(0);
+ }
+ SDL_EnableKeyRepeat(0, 0);
+}
+
+// Main function
+int main(int argc, char **argv)
+{
+ SDL_Event event;
+ char title[256];
+ char fpstxt[16];
+
+ // Process arguments
+ printf("%s\n\n", AppName);
+ PokeMini_InitDirs(argv[0], NULL);
+ CommandLineInit();
+ CommandLineConfFile("/tmp0/1/pokemini.cfg", "/tmp0/1/pokemini_sdl.cfg", CustomConf);
+ if (!CommandLineArgs(argc, argv, CustomArgs)) {
+ PrintHelpUsage(stdout);
+ printf(" -dumpsound sound.wav Dump sound into a WAV file\n");
+ printf(" -windowed Display in window (default)\n");
+ printf(" -fullscreen Display in fullscreen\n");
+ printf(" -displayfps Display FPS counter on screen\n");
+ printf(" -zoom n Zoom display: 1 to 6 (def 4)\n");
+ printf(" -bpp n Bits-Per-Pixel: 16 or 32 (def 16)\n");
+ return 1;
+ }
+
+ // Initialize SDL
+ if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) {
+ fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
+ return 1;
+ }
+ atexit(SDL_Quit); // Clean up on exit
+
+ // Initialize the display
+ setup_screen();
+
+ // Initialize the sound
+ SDL_AudioSpec audfmt;
+ SDL_AudioSpec obtained;
+ audfmt.freq = 44100;
+ audfmt.format = AUDIO_U8;
+ audfmt.channels = 1;
+ audfmt.samples = SOUNDBUFFER;
+ audfmt.callback = emulatorsound;
+ audfmt.userdata = NULL;
+
+ // Open the audio device
+ // Second setting can't be NULL on KolibriOS or else it wont play sound
+ if (SDL_OpenAudio(&audfmt, &obtained) < 0) {
+ fprintf(stderr, "Unable to open audio: %s\n", SDL_GetError());
+ fprintf(stderr, "Audio will be disabled\n");
+ AudioEnabled = 0;
+ } else {
+ AudioEnabled = 1;
+ }
+
+ // Set the window manager title bar
+ SDL_WM_SetCaption(AppName, "PMEWindow");
+ SDL_EnableKeyRepeat(0, 0);
+
+ // Open WAV capture if was requested
+ if (clc_dump_sound[0]) {
+ sdump = Open_ExportWAV(clc_dump_sound, EXPORTWAV_44KHZ | EXPORTWAV_MONO | EXPORTWAV_16BITS);
+ if (!sdump) {
+ fprintf(stderr, "Error opening sound export file.\n");
+ return 1;
+ }
+ }
+
+ // Initialize the emulator
+ printf("Starting emulator...\n");
+ if (!PokeMini_Create(0, PMSNDBUFFER)) {
+ fprintf(stderr, "Error while initializing emulator\n");
+ return 1;
+ }
+
+ // Setup palette and LCD mode
+ PokeMini_VideoPalette_Init(PokeMini_BGR16, 1);
+ PokeMini_VideoPalette_Index(CommandLine.palette, CommandLine.custompal, CommandLine.lcdcontrast, CommandLine.lcdbright);
+ PokeMini_ApplyChanges();
+
+ // Load stuff
+ PokeMini_UseDefaultCallbacks();
+ if (!PokeMini_LoadFromCommandLines("Using FreeBIOS", "EEPROM data will be discarded!")) {
+ UI_Status = UI_STATUS_MENU;
+ }
+
+ // Enable sound & init UI
+ printf("Running emulator...\n");
+ UIMenu_Init();
+ KeyboardRemap(&KeybMapSDL);
+
+ if (CommandLine.sound == MINX_AUDIO_GENERATED)
+ enablesound(MINX_AUDIO_GENERATED);
+ else
+ enablesound(0);
+
+ // Emulator's loop
+ unsigned long time, NewTickFPS = 0, NewTickSync = 0;
+ int fps = 72, fpscnt = 0;
+ while (emurunning) {
+ // Emulate and syncronize
+ time = SDL_GetTicks();
+ if (RequireSoundSync) {
+ PokeMini_EmulateFrame();
+ // Sleep a little in the hope to free a few samples
+ if (emulimiter) while (MinxAudio_SyncWithAudio()) SDL_Delay(1);
+ } else {
+ PokeMini_EmulateFrame();
+ if (emulimiter) {
+ do {
+ SDL_Delay(1); // This lower CPU usage
+ time = SDL_GetTicks();
+ } while (time < NewTickSync);
+ NewTickSync = time + 13; // Aprox 72 times per sec
+ }
+ }
+
+ // Screen rendering
+ SDL_FillRect(screen, NULL, 0);
+ if (SDL_LockSurface(screen) == 0) {
+ // Render the menu or the game screen
+ if (PokeMini_Rumbling) {
+ PokeMini_VideoBlit((void *)((uint8_t *)screen->pixels + PMOff + PokeMini_GenRumbleOffset(screen->pitch)), PixPitch);
+ } else {
+ PokeMini_VideoBlit((void *)((uint8_t *)screen->pixels + PMOff), PixPitch);
+ }
+ LCDDirty = 0;
+
+ // Display FPS counter
+ if (clc_displayfps) {
+ if (PokeMini_VideoDepth == 32)
+ UIDraw_String_32((uint32_t *)screen->pixels, PixPitch, 4, 4, 10, fpstxt, UI_Font1_Pal32);
+ else
+ UIDraw_String_16((uint16_t *)screen->pixels, PixPitch, 4, 4, 10, fpstxt, UI_Font1_Pal16);
+ }
+
+ // Unlock surface
+ SDL_UnlockSurface(screen);
+ SDL_Flip(screen);
+ }
+
+ // Handle events
+ while (SDL_PollEvent(&event)) handleevents(&event);
+
+ // Menu
+ if (UI_Status == UI_STATUS_MENU) menuloop();
+
+ // calculate FPS
+ fpscnt++;
+ if (time >= NewTickFPS) {
+ fps = fpscnt;
+ sprintf(title, "%s - %d%%", AppName, fps * 100 / 72);
+ sprintf(fpstxt, "%i FPS", fps);
+ SDL_WM_SetCaption(title, "PMEWindow");
+ NewTickFPS = time + 1000;
+ fpscnt = 0;
+ }
+ }
+
+ // Disable sound & free UI
+ enablesound(0);
+ UIMenu_Destroy();
+
+ // Close WAV capture if there's one
+ if (clc_dump_sound[0]) Close_ExportWAV(sdump);
+
+ // Save Stuff
+ PokeMini_SaveFromCommandLines(1);
+
+ // Terminate...
+ printf("Shutdown emulator...\n");
+ PokeMini_VideoPalette_Free();
+ PokeMini_Destroy();
+
+ return 0;
+}
diff --git a/programs/emulator/pokemini/doc/LICENSE b/programs/emulator/pokemini/doc/LICENSE
new file mode 100644
index 0000000000..37ee3e5d13
--- /dev/null
+++ b/programs/emulator/pokemini/doc/LICENSE
@@ -0,0 +1,15 @@
+PokeMini - Pokémon-Mini Emulator
+Copyright (C) 2014 JustBurn
+
+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 3 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, see .
diff --git a/programs/emulator/pokemini/doc/Readme.txt b/programs/emulator/pokemini/doc/Readme.txt
new file mode 100644
index 0000000000..5a6f732f12
--- /dev/null
+++ b/programs/emulator/pokemini/doc/Readme.txt
@@ -0,0 +1,19 @@
+========================
+PokeMini 0.60 for KolibriOS
+========================
+Port for KolibriOS by gameblabla
+
+PokeMini is a Pokémon mini emulator by JustBurn.
+It has been ported to the PCs, Sega Dreamcast, PSP, NDS
+with unofficial ports for the GCW0, TI Nspire and now the KolibriOS.
+
+This requires at least a Pentium Pro to even work.
+Why ? Because the toolchain was compiled for Pentium Pro+ support only... (SERGE!)
+
+Sound is supported too, your soundcard needs to support Mono 44050hz 8bits.
+I think that shouldn't be a problem as even a SB16 supports that...
+
+To open a ROM, you need to use the "Open with..." thingy.
+Choose a Pokémon Mini ROM for that and choose to open it with PokéMini.
+
+Enjoy !
diff --git a/programs/emulator/pokemini/doc/original_readme.txt b/programs/emulator/pokemini/doc/original_readme.txt
new file mode 100644
index 0000000000..78f092bb04
--- /dev/null
+++ b/programs/emulator/pokemini/doc/original_readme.txt
@@ -0,0 +1,204 @@
+ ___ _ _
+ | _ \ | \_/ |
+ | _/ | _ |
+ | | | | | |
+ |_| OKE |_| |_| INI
+ -------------------
+ Version 0.60
+
+ Homebrew-emulator for Pokémon-Mini!
+
+ Latest version can be found in:
+ http://pokemini.sourceforge.net/
+
+ For hardware documentation, visit:
+ http://wiki.sublab.net/index.php/Pokemon_Mini
+
+> Keys & Information:
+
+ To include real BIOS, place "bios.min" on the emulator's directory.
+ When no "bios.min" is present, emulator will use Pokémon-Mini FreeBIOS.
+
+ Pokémon-Mini PC Keys
+ ----------------------------
+ D-PAD Left Arrow Left
+ D-PAD Right Arrow Right
+ D-PAD Up Arrow Up
+ D-PAD Down Arrow Down
+ Key A Keyboard X
+ Key B Keyboard Z
+ Key C Keyboard S or C
+ Power Button Keyboard E
+ Shock Detector Keyboard A
+ ----------------------------
+ UI Menu Keyboard Esc
+
+ F9 will capture the screen and save as "snap_(sequence number).bmp"
+
+ F10 can toggle between Fullscreen and Windowed.
+
+ F11 will disable/enable speed throttle
+
+ TAB can be hold to temporary disable speed throttle
+
+> Supported multicarts:
+
+ Type 0 - Disabled (Commercial, Prototype)
+ Read only
+
+ Type 1 - Normal 512KB Flash (AM29LV040B)
+ Read, Erase, Write, Banking and Manufacturer ID
+
+ Type 2 - Lupin's 512KB Flash (AM29LV040B)
+ Read, Erase, Write, Banking and Manufacturer ID
+
+> Command-Line:
+
+ Usage:
+ PokeMini [Options] rom.min
+
+ Options:
+ -freebios Force FreeBIOS
+ -bios otherbios.min Load BIOS
+ -noeeprom Discard EEPROM data
+ -eeprom pokemini.eep Load/Save EEPROM file
+ -eepromshare Share EEPROM to all ROMs (default)
+ -noeepromshare Each ROM will use individual EEPROM
+ -nostate Discard State data (default)
+ -state pokemini.sta Load/Save state file
+ -nortc No RTC
+ -statertc RTC time difference in savestates
+ -hostrtc RTC match the Host clock (def)
+ -nosound Disable sound
+ -sound Same as -soundpiezo (def)
+ -sounddirect Use timer 3 directly for sound (default)
+ -soundemulate Use sound circuit emulation
+ -sounddirectpwm Same as direct, can play PWM samples
+ -nopiezo Disable piezo speaker filter
+ -piezo Enable piezo speaker filter (def)
+ -scanline 50% Scanline LCD filter
+ -dotmatrix LCD dot-matrix filter (def)
+ -nofilter No LCD filter
+ -2shades LCD Mode: No mixing
+ -3shades LCD Mode: Grey emulation
+ -analog LCD Mode: Pretend real LCD (default)
+ -fullbattery Emulate with a full battery (default)
+ -lowbattery Emulate with a weak battery
+ -palette n Select palette for colors (0 to 15)
+ -rumblelvl 3 Rumble level (0 to 3)
+ -nojoystick Disable joystick (def)
+ -joystick Enable joystick
+ -joyid 0 Set joystick ID
+ -custom1light 0xFFFFFF Palette Custom 1 Light
+ -custom1dark 0x000000 Palette Custom 1 Dark
+ -custom2light 0xFFFFFF Palette Custom 2 Light
+ -custom2dark 0x000000 Palette Custom 2 Dark
+ -synccycles 8 Number of cycles per hardware sync.
+ -multicart 0 Multicart type (0 to 2)
+ -lcdcontrast 64 LCD contrast boost in percent
+ -lcdbright 0 LCD brightness offset in percent
+
+ Only on SDL platform:
+ -dumpsound sound.wav Dump sound into a WAV file
+ -windowed Display in window (default)
+ -fullscreen Display in fullscreen
+ -zoom n Zoom display: 1 to 4 (def 4)
+ -bpp n Bits-Per-Pixel: 16 or 32 (def 16)
+
+ Only on Debugger platform:
+ -autorun 0 Autorun, 0=Off, 1=Full, 2=Dbg+Snd, 3=Dbg
+ -windowed Display in window (default)
+ -fullscreen Display in fullscreen
+ -zoom n Zoom display: 1 to 4 (def 4)
+ -bpp n Bits-Per-Pixel: 16 or 32 (def 16)
+
+
+> System requirements:
+
+ No sound:
+ Pentium III 733 Mhz or better recommended.
+
+ With sound:
+ Pentium IV 1.7 Ghz or better recommended.
+
+ Note: Performance tests were based on 0.4.0 version
+
+> History:
+
+ -: 0.60 Changes :-
+ Changed version format to only 2 fields to avoid confusion
+ Fixed RTC month being reported wrong from host
+ Adjusted graphics, now it display darker shades to match more closely the real system
+ Added 2 new options: LCD contrast and LCD bright
+ Changed the way analog LCD mode works, now it's less blurry and can do up to 5 shades without artifacts
+ SDL port has been upgraded to SDL 2, this brings Haptic support and other improvements
+ New Keyboard/Joystick option to allow checking inputs
+ Applying joystick settings now can (re)enable the device
+ Share EEPROM is now disabled by default
+ Emulator can be compiled for 64-bit CPU without issues now
+ Limited sync-cycles to 64 on 'accurancy' platforms
+ Win32 Only:
+ Corrected Direct3D issue in some GPUs
+ Sound write position is now handled correctly
+ NDS Only: Added 3-in-1 rumble support
+ PSP Only:
+ Analog stick now works
+ Added FPS display under Platform... (default is off)
+ Reached 100% emulation by skipping 1 frame, aparently hardware is limited to 60fps max
+ Dreamcast Only:
+ Improved sound latency (thanks BlueCrab).
+ Added FPS display under Platform... (default is off)
+ Debugger Only:
+ Minor fixes
+ Trace history is now 10000 instructions instead of 256
+ Added copy & paste buttons to timing counters
+
+ Older History can be found at:
+ http://sourceforge.net/p/pokemini/wiki/History/
+
+> License GPLv3 (emulator and tools):
+
+PokeMini - Pokémon-Mini Emulator
+Copyright (C) 2015 JustBurn
+
+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 3 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, see .
+
+> Greetings & Links:
+
+ Thank's to p0p, Dave|X, Onori
+ goldmomo, asterick, DarkFader, Agilo
+ MrBlinky, Wa, Lupin and everyone at
+ #pmdev on IRC EFNET!
+ Questions and Bugs reports are welcome!
+
+ PokeMini webpage:
+ https://sourceforge.net/projects/pokemini/
+
+ Pokemon-Mini Hardware:
+ http://wiki.sublab.net/index.php/Pokemon_Mini
+
+ Pokémon-mini.net:
+ http://www.pokemon-mini.net/
+
+ MEGA - Museum of Electronic Games & Art:
+ http://m-e-g-a.org/
+
+ Minimon (other Pokemon-Mini emulator):
+ http://www.sublab.net/projects/minimon/
+
+ DarkFader Pokemon-Mini webpage:
+ http://darkfader.net/pm/
+
+ Agilo's Weblog:
+ http://www.agilo.nl/
diff --git a/programs/emulator/pokemini/freebios/Makefile b/programs/emulator/pokemini/freebios/Makefile
new file mode 100644
index 0000000000..64ec1bacd4
--- /dev/null
+++ b/programs/emulator/pokemini/freebios/Makefile
@@ -0,0 +1,5 @@
+OUTFILE = noout
+OBJS = freebios.o
+CFLAGS = -Os -DNOTPSP -DFRAMELIMIT -DNODEBUG -DNO_SNPRINTF -DKOLIBRI -I/home/hatsune/menuetos/include/SDL
+LIBS = -lm
+include $(MENUETDEV)/makefiles/Makefile_for_program
diff --git a/programs/emulator/pokemini/freebios/freebios.c b/programs/emulator/pokemini/freebios/freebios.c
new file mode 100644
index 0000000000..58f06edda0
--- /dev/null
+++ b/programs/emulator/pokemini/freebios/freebios.c
@@ -0,0 +1,259 @@
+const unsigned char FreeBIOS[] =
+{
+ 0x9A,0x00,0xAB,0x00,0xAB,0x00,0x2F,0x02,0x41,0x02,0x53,0x02,0x65,0x02,0x77,0x02,
+ 0x89,0x02,0x9B,0x02,0xAD,0x02,0xBF,0x02,0xD1,0x02,0xE3,0x02,0xF5,0x02,0x07,0x03,
+ 0x19,0x03,0xAB,0x00,0xAB,0x00,0x60,0x04,0x2B,0x03,0xF1,0x03,0x3D,0x03,0x4F,0x03,
+ 0x61,0x03,0x73,0x03,0x85,0x03,0x97,0x03,0xA9,0x03,0xBB,0x03,0xCD,0x03,0xDF,0x03,
+ 0xF1,0xFF,0x9E,0x04,0x60,0x04,0x60,0x04,0xE4,0x04,0x60,0x04,0x0D,0x05,0x24,0x05,
+ 0x45,0x05,0x4C,0x05,0x5D,0x05,0x7C,0x05,0x92,0x05,0x9F,0x05,0xBB,0x05,0x60,0x04,
+ 0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,
+ 0x60,0x04,0xD6,0x05,0xE3,0x05,0x60,0x04,0x60,0x04,0xF0,0x05,0x00,0x06,0x66,0x06,
+ 0x7A,0x06,0x8A,0x06,0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,0x60,0x04,
+ 0x60,0x04,0x60,0x04,0x60,0x04,0x00,0x00,0x98,0x06,0xB4,0x20,0x38,0xCE,0xCD,0xDD,
+ 0x08,0x02,0xD9,0x08,0x01,0xDD,0x00,0x7C,0xDD,0x02,0x00,0x9F,0xC0,0xB4,0x20,0x38,
+ 0xCE,0xCD,0xCE,0xCE,0xCE,0xCF,0xCF,0x6E,0x00,0x20,0xDD,0x80,0x00,0xCE,0xC4,0x01,
+ 0xF3,0x01,0x00,0xD9,0x00,0x03,0xD9,0x01,0x30,0xD9,0x02,0xC0,0xF2,0xE1,0x00,0xC6,
+ 0xA0,0x06,0xBE,0x82,0x20,0x79,0x84,0x79,0x85,0x79,0x86,0x79,0x87,0x79,0x88,0x79,
+ 0x89,0x38,0xC6,0x00,0x10,0x60,0x92,0xD6,0x00,0x20,0xEF,0xF9,0xFF,0xF2,0x05,0x01,
+ 0xDD,0xFE,0xAF,0xF2,0x1D,0x01,0xD9,0x80,0x0A,0xD9,0x81,0x01,0xDC,0x10,0x20,0xEF,
+ 0x40,0x00,0xF2,0x2F,0x00,0xEF,0x3A,0x00,0x38,0xDD,0x80,0x00,0xDD,0x81,0x07,0x78,
+ 0x82,0x78,0x83,0xD8,0x01,0xEF,0xC6,0x00,0x10,0x60,0x92,0xD6,0x00,0x20,0xEF,0xF9,
+ 0xFF,0xC4,0x00,0x00,0xCF,0xE4,0xCF,0xE8,0xCF,0xEC,0x4C,0x52,0xB0,0xFF,0x9C,0xC0,
+ 0xF3,0xD0,0x1F,0xCE,0xD0,0x00,0x21,0x32,0x4D,0xF8,0xCE,0xD0,0x01,0x21,0x32,0x4E,
+ 0xF8,0xB1,0x03,0xA0,0xB0,0x01,0xC6,0x7D,0x13,0xB1,0x03,0xF2,0x51,0x00,0xC6,0x88,
+ 0x13,0xB1,0x04,0xF2,0x49,0x00,0xDC,0x10,0x20,0xEE,0x0B,0x00,0xC6,0x94,0x13,0xB0,
+ 0x08,0xB1,0x04,0xF2,0x39,0x00,0xF2,0xCB,0xFF,0xEE,0x0B,0x00,0xC6,0xA0,0x13,0xB0,
+ 0x0C,0xB1,0x04,0xF2,0x29,0x00,0xF2,0x2C,0x00,0xC6,0x94,0x13,0xB0,0x00,0xB1,0x04,
+ 0xF2,0x17,0x00,0xF2,0x1F,0x00,0xA8,0xF5,0xBB,0xC6,0xA0,0x13,0xB0,0x00,0xB1,0x04,
+ 0xF2,0x07,0x00,0xF2,0x0F,0x00,0xF3,0x6A,0xFF,0x60,0x92,0xF5,0xFD,0xF8,0x60,0x92,
+ 0x80,0xF5,0xFC,0xF8,0xB0,0xFF,0xB1,0xFF,0xF5,0xFF,0x88,0xEF,0xF9,0xFF,0xF8,0xB1,
+ 0x00,0xDD,0x10,0x08,0xD8,0x19,0xCF,0x79,0x20,0xDD,0x21,0x30,0xDD,0x22,0x02,0x79,
+ 0x23,0xDD,0x24,0x02,0x79,0x25,0x79,0x26,0x79,0x40,0x79,0x44,0xDD,0x50,0xFF,0x79,
+ 0x51,0x79,0x54,0x79,0x55,0xD9,0x60,0x0C,0xD8,0x61,0xFB,0xD9,0x61,0x08,0xD9,0x61,
+ 0x04,0xDD,0x61,0x20,0xDD,0x60,0x32,0x79,0x62,0x79,0x70,0x79,0x71,0xDD,0xFE,0x81,
+ 0xDD,0xFE,0x1F,0xF8,0xA1,0xC5,0xFE,0x20,0xB5,0xE3,0xB5,0xA4,0xB5,0xAD,0xB5,0x00,
+ 0xB5,0x10,0xB5,0xEE,0xB5,0x40,0xB5,0xA2,0xB5,0xA0,0xB5,0xC0,0xB5,0xA6,0xB5,0x2F,
+ 0xA9,0xF8,0xC5,0xFE,0x20,0xB5,0xE3,0xB3,0xB0,0x6B,0xB5,0x00,0xB5,0x10,0xB1,0x60,
+ 0x91,0xDD,0xFF,0x00,0xF5,0xFC,0x99,0x83,0xCE,0xBE,0xB8,0xEF,0xEC,0xFF,0xF8,0xA5,
+ 0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0x00,0x02,0xAC,0xAD,0xF3,0xC8,
+ 0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0xEE,0x01,0xAC,0xAD,
+ 0xF3,0xBC,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0xDC,0x01,
+ 0xAC,0xAD,0xF3,0xB0,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,
+ 0xCA,0x01,0xAC,0xAD,0xF3,0xA4,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,
+ 0x20,0xEA,0xB8,0x01,0xAC,0xAD,0xF3,0x98,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,
+ 0xDC,0x01,0x20,0xEA,0xA6,0x01,0xAC,0xAD,0xF3,0x8C,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,
+ 0xB4,0x20,0xDC,0x01,0x20,0xEA,0x94,0x01,0xAC,0xAD,0xF3,0x80,0x1E,0xA5,0xA4,0xCE,
+ 0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0x82,0x01,0xAC,0xAD,0xF3,0x74,0x1E,0xA5,
+ 0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0x70,0x01,0xAC,0xAD,0xF3,0x68,
+ 0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0x5E,0x01,0xAC,0xAD,
+ 0xF3,0x5C,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0x4C,0x01,
+ 0xAC,0xAD,0xF3,0x50,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,
+ 0x3A,0x01,0xAC,0xAD,0xF3,0x44,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,
+ 0x20,0xEA,0x28,0x01,0xAC,0xAD,0xF3,0x38,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,
+ 0xDC,0x01,0x20,0xEA,0x16,0x01,0xAC,0xAD,0xF3,0x2C,0x1E,0xA5,0xA4,0xCE,0xC5,0x00,
+ 0xB4,0x20,0xDC,0x01,0x20,0xEA,0x04,0x01,0xAC,0xAD,0xF3,0x62,0x1E,0xA5,0xA4,0xCE,
+ 0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0xF2,0x00,0xAC,0xAD,0xF3,0x14,0x1E,0xA5,
+ 0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0xE0,0x00,0xAC,0xAD,0xF3,0x08,
+ 0x1E,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0xCE,0x00,0xAC,0xAD,
+ 0xF3,0xFC,0x1D,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0xBC,0x00,
+ 0xAC,0xAD,0xF3,0xF0,0x1D,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,
+ 0xAA,0x00,0xAC,0xAD,0xF3,0xE4,0x1D,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,
+ 0x20,0xEA,0x98,0x00,0xAC,0xAD,0xF3,0xD8,0x1D,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,
+ 0xDC,0x01,0x20,0xEA,0x86,0x00,0xAC,0xAD,0xF3,0xCC,0x1D,0xA5,0xA4,0xCE,0xC5,0x00,
+ 0xB4,0x20,0xDC,0x01,0x20,0xEA,0x74,0x00,0xAC,0xAD,0xF3,0xC0,0x1D,0xA5,0xA4,0xCE,
+ 0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0x62,0x00,0xAC,0xAD,0xF3,0xB4,0x1D,0xA5,
+ 0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEA,0x50,0x00,0xAC,0xAD,0xF3,0xA8,
+ 0x1D,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x01,0x20,0xEF,0x2A,0x00,0xDC,0x01,
+ 0x10,0xEF,0xA8,0xFC,0xDC,0x71,0x04,0xEE,0x0D,0x00,0xDC,0x02,0x40,0xEE,0x07,0x00,
+ 0xD8,0x71,0xFB,0xD9,0x02,0x80,0xDC,0x01,0x80,0xEE,0x11,0x00,0xDC,0x02,0x20,0xEF,
+ 0x14,0x00,0xAC,0xAD,0xF3,0xD7,0x1B,0xAC,0xAD,0xF3,0x31,0x1D,0xD9,0x01,0x20,0xDC,
+ 0x02,0x20,0xEF,0xF3,0xFF,0xDD,0x29,0x80,0xAC,0xAD,0xF9,0xDC,0x71,0x04,0xEE,0x0D,
+ 0x00,0xDC,0x02,0x40,0xEE,0x07,0x00,0xD8,0x71,0xFB,0xD9,0x02,0x80,0xDC,0x01,0x80,
+ 0xEE,0x0A,0x00,0xCF,0x68,0x03,0x00,0xAC,0xAD,0xF3,0xA2,0x1B,0xD9,0x01,0x20,0xF8,
+ 0xF9,0xD8,0x80,0xF7,0xDD,0xFE,0xAE,0xDD,0xFE,0xAC,0xDD,0xFE,0x28,0xDD,0xFE,0xA5,
+ 0xD8,0x02,0xE3,0xD8,0x81,0xFE,0xD9,0x02,0x01,0xD9,0x24,0x02,0xD9,0x21,0x30,0xD8,
+ 0x01,0xDF,0xD8,0x02,0xE3,0xA7,0x9F,0x80,0xCE,0xAE,0xAF,0xD9,0x02,0x10,0xD9,0x81,
+ 0x01,0xF2,0x61,0xFD,0xDD,0xFE,0xAF,0xD8,0x02,0xDF,0xD9,0x00,0x03,0xF8,0xA5,0xA4,
+ 0x9F,0xC0,0xCE,0xC5,0x00,0xB4,0x20,0x4C,0x80,0x44,0x21,0x22,0x0C,0xA0,0x4C,0x23,
+ 0x44,0x24,0xA0,0x4C,0x25,0x44,0x26,0xA0,0xDD,0x23,0x00,0xDD,0x24,0x00,0xDD,0x25,
+ 0x80,0xDD,0x26,0x00,0xD9,0x21,0x0C,0xDD,0x29,0x80,0xDD,0x80,0x00,0xF2,0x92,0xFF,
+ 0xA8,0x79,0x25,0x78,0x26,0xA8,0x79,0x23,0x78,0x24,0xA8,0x79,0x80,0x22,0xF3,0x78,
+ 0x21,0xAC,0xAD,0xF9,0x9F,0xC0,0xCF,0x6E,0x00,0x20,0xCE,0xC5,0x00,0xB4,0x20,0xF2,
+ 0xBE,0xFC,0xDD,0x23,0x00,0xDD,0x24,0x00,0xDD,0x25,0x80,0xDD,0x26,0x00,0xDD,0x29,
+ 0x80,0xDD,0x80,0x00,0xDD,0x21,0x0C,0xF2,0x58,0xFF,0xF3,0x9F,0xFB,0xAF,0xA5,0xA1,
+ 0xCE,0xC5,0x00,0xC5,0x00,0x20,0xCE,0x84,0xCE,0x84,0xCE,0x25,0x03,0xCE,0x2C,0xA9,
+ 0xAD,0xF3,0x23,0x00,0xF2,0x27,0x00,0xAF,0xA7,0xEE,0x0A,0x00,0x32,0x3F,0xEE,0x0D,
+ 0x00,0x80,0xF3,0x0C,0x00,0x28,0xEE,0x05,0x00,0x88,0xF3,0x04,0x00,0xB0,0xFF,0xF9,
+ 0xF2,0xCC,0xFF,0x38,0xF9,0xAF,0xF2,0x05,0x00,0xF3,0x13,0x00,0xAF,0xA5,0xA4,0xCE,
+ 0xC5,0x00,0xB4,0x20,0x44,0x00,0xCE,0x8C,0xCE,0x8C,0xAC,0xAD,0xF8,0xAF,0xA5,0xA4,
+ 0xCE,0xC5,0x00,0xB4,0x20,0x48,0xDC,0x80,0x08,0xA7,0xD8,0x80,0xF7,0xDD,0xFE,0x81,
+ 0x79,0xFE,0xAF,0xEE,0x04,0x00,0xD9,0x80,0x08,0xAC,0xAD,0xF8,0xA5,0xA4,0xCE,0xC5,
+ 0x00,0xB4,0x20,0xF2,0x6F,0xFC,0xDD,0xFE,0xAF,0xD9,0x80,0x04,0xD9,0x81,0x01,0xAC,
+ 0xAD,0xF9,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xF2,0x59,0xFC,0xAC,0xAD,0xF9,0xA5,
+ 0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xD8,0x80,0xF7,0xDD,0xFE,0xAE,0xDD,0xFE,0xAC,0xDD,
+ 0xFE,0x28,0xDD,0xFE,0xA5,0xD8,0x81,0xFE,0xAC,0xAD,0xF9,0xA5,0xA4,0xCE,0xC5,0x00,
+ 0xB4,0x20,0x9F,0xC0,0xDC,0x01,0x80,0xEF,0x0A,0x00,0xD9,0x01,0x80,0xD9,0x01,0x40,
+ 0xD8,0x01,0xDF,0xAC,0xAD,0xF9,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xD8,0x00,0xFC,
+ 0xAC,0xAD,0xF9,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xD9,0x00,0x03,0xAC,0xAD,0xF9,
+ 0xAF,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xDC,0x53,0x02,0x9E,0x01,0xAC,0xAD,0xF8,
+ 0xA5,0xA4,0xCE,0xC5,0x00,0xB4,0x20,0xA6,0xA2,0xA3,0xA1,0xCF,0xB1,0x9F,0xC0,0x46,
+ 0x96,0x01,0xCE,0xC1,0xEE,0x0E,0x00,0xC2,0x0A,0x00,0x5E,0x9A,0x56,0x9A,0xA1,0x4E,
+ 0x9A,0xF3,0x04,0x00,0xC2,0x07,0x00,0xA0,0x4E,0x9A,0x46,0x9A,0x5E,0x9A,0x56,0x9A,
+ 0xCE,0xCF,0xCF,0xED,0x46,0x9A,0x5E,0x9A,0x56,0xCE,0xCE,0xCF,0xE9,0xD9,0x02,0x80,
+ 0xB6,0xFF,0xD9,0x02,0x80,0x47,0xD9,0x02,0x80,0x31,0xA8,0xCE,0xC3,0xEE,0x0A,0x00,
+ 0xAF,0x51,0xA8,0x58,0x41,0xA7,0xF2,0x0B,0x00,0xA8,0x22,0x01,0xA9,0xAB,0xAA,0xAE,
+ 0xAC,0xAD,0xF9,0xCE,0xCC,0xF4,0xA5,0xA1,0xCE,0xC5,0x00,0xC5,0x81,0x20,0xCE,0x25,
+ 0xF1,0x22,0x07,0xCE,0x84,0xCE,0x2C,0xA9,0xAD,0xF9,0xA5,0xA4,0xCE,0xC5,0x00,0xB4,
+ 0x20,0x44,0x81,0xCE,0x8C,0x22,0x07,0xAC,0xAD,0xF9,0xAF,0xA5,0xA4,0xCE,0xC5,0x00,
+ 0xB4,0x20,0xDC,0x01,0x08,0xAC,0xAD,0xF8,0xB7,0x02,0xF5,0xFF,0xB7,0x00,0xF9,0xFF,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x04,0x82,0xE1,0xE1,0x31,0x31,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x31,0xE1,0xE1,0x82,0x06,0xFA,0x04,0xF8,0x00,
+ 0xFE,0x82,0xEA,0x3A,0xFE,0x82,0xEA,0x96,0xFC,0xC7,0xAA,0xBB,0xFF,0xC7,0xAA,0xBA,
+ 0xFE,0x82,0xAA,0xD6,0xFE,0x8A,0xFE,0xC6,0xBB,0xC7,0xFD,0xB6,0xAB,0xAB,0xDA,0x7E,
+ 0x7C,0x7C,0x40,0x40,0x00,0x38,0x7C,0x44,0x7C,0x38,0x00,0x3C,0x7C,0x20,0x7C,0x3C,
+ 0x00,0x00,0x7C,0x7C,0x7C,0x74,0x6C,0x54,0x64,0x44,0x44,0x44,0x44,0x6C,0x38,0x00,
+ 0x7C,0x7C,0x08,0x10,0x7C,0x7C,0x00,0x38,0x7C,0x44,0x7C,0x38,0x00,0x00,0x00,0x38,
+ 0x44,0x44,0x00,0x78,0x14,0x14,0x78,0x00,0x7C,0x14,0x14,0x68,0x00,0x04,0x7C,0x04,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0x20,0x20,0x20,0x20,0x46,0x72,0x65,0x65,0x77,0x61,0x72,0x65,0x20,0x20,0x20,0x20,
+ 0x50,0x6F,0x6B,0x65,0x6D,0x6F,0x6E,0x4D,0x69,0x6E,0x69,0x20,0x42,0x49,0x4F,0x53,
+ 0x20,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x20,0x20,0x31,0x2E,0x33,0x20,0x20,
+ 0x20,0x62,0x79,0x20,0x54,0x65,0x61,0x6D,0x20,0x50,0x6F,0x6B,0x65,0x6D,0x65,0x20,
+};
diff --git a/programs/emulator/pokemini/freebios/freebios.h b/programs/emulator/pokemini/freebios/freebios.h
new file mode 100644
index 0000000000..065413910f
--- /dev/null
+++ b/programs/emulator/pokemini/freebios/freebios.h
@@ -0,0 +1,25 @@
+/*
+ PokeMini - Pokémon-Mini Emulator
+ Copyright (C) 2009 JustBurn
+
+ 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 3 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, see .
+*/
+
+#ifndef FREEBIOS_H
+#define FREEBIOS_H
+
+// Free BIOS (4KB)
+extern const unsigned char FreeBIOS[];
+
+#endif
diff --git a/programs/emulator/pokemini/freebios/noout.map b/programs/emulator/pokemini/freebios/noout.map
new file mode 100644
index 0000000000..622a4b39c2
--- /dev/null
+++ b/programs/emulator/pokemini/freebios/noout.map
@@ -0,0 +1,235 @@
+Archive member included because of file (symbol)
+
+/home/hatsune/menuetos/lib/libc.a(param.o)
+ /home/hatsune/menuetos/stub/crt0.o (__menuet__app_path_area)
+/home/hatsune/menuetos/lib/libc.a(crt1.o)
+ /home/hatsune/menuetos/stub/crt0.o (__crt1_startup)
+/home/hatsune/menuetos/lib/libc.a(brk.o)
+ /home/hatsune/menuetos/lib/libc.a(crt1.o) (init_brk)
+/home/hatsune/menuetos/lib/libc.a(crt0.o)
+ /home/hatsune/menuetos/lib/libc.a(crt1.o) (__crt0_setup_arguments)
+/home/hatsune/menuetos/lib/libc.a(emu_init.o)
+ /home/hatsune/menuetos/lib/libc.a(crt1.o) (dosemu_inithandles)
+/home/hatsune/menuetos/lib/libc.a(_main.o)
+ /home/hatsune/menuetos/lib/libc.a(crt1.o) (__main)
+/home/hatsune/menuetos/lib/libc.a(exit.o)
+ /home/hatsune/menuetos/lib/libc.a(crt1.o) (exit)
+/home/hatsune/menuetos/lib/libc.a(errno.o)
+ /home/hatsune/menuetos/lib/libc.a(brk.o) (errno)
+/home/hatsune/menuetos/lib/libc.a(malloc.o)
+ /home/hatsune/menuetos/lib/libc.a(crt0.o) (malloc)
+/home/hatsune/menuetos/lib/libc.a(strlen.o)
+ /home/hatsune/menuetos/lib/libc.a(crt0.o) (strlen)
+/home/hatsune/menuetos/lib/libc.a(strcpy.o)
+ /home/hatsune/menuetos/lib/libc.a(emu_init.o) (strcpy)
+/home/hatsune/menuetos/lib/libc.a(strrchr.o)
+ /home/hatsune/menuetos/lib/libc.a(emu_init.o) (strrchr)
+/home/hatsune/menuetos/lib/libc.a(delay.o)
+ /home/hatsune/menuetos/lib/libc.a(malloc.o) (__menuet__delay100)
+/home/hatsune/menuetos/lib/libc.a(memcpy.o)
+ /home/hatsune/menuetos/lib/libc.a(malloc.o) (memcpy)
+
+Memory Configuration
+
+Name Origin Length Attributes
+*default* 0x0000000000000000 0xffffffffffffffff
+
+Linker script and memory map
+
+ 0x0000000000400000 __image_base__ = 0x400000
+ 0x0000000000000000 __dll__ = 0x0
+ 0x0000000000400000 ___ImageBase = 0x400000
+ 0x0000000000000010 __section_alignment__ = 0x10
+ 0x0000000000000010 __file_alignment__ = 0x10
+ 0x0000000000000004 __major_os_version__ = 0x4
+ 0x0000000000000000 __minor_os_version__ = 0x0
+ 0x0000000000000001 __major_image_version__ = 0x1
+ 0x0000000000000000 __minor_image_version__ = 0x0
+ 0x0000000000000004 __major_subsystem_version__ = 0x4
+ 0x0000000000000000 __minor_subsystem_version__ = 0x0
+ 0x0000000000000003 __subsystem__ = 0x3
+ 0x0000000000200000 __size_of_stack_reserve__ = 0x200000
+ 0x0000000000001000 __size_of_stack_commit__ = 0x1000
+ 0x0000000000100000 __size_of_heap_reserve__ = 0x100000
+ 0x0000000000001000 __size_of_heap_commit__ = 0x1000
+ 0x0000000000000000 __loader_flags__ = 0x0
+ 0x0000000000000000 __dll_characteristics__ = 0x0
+
+.text 0x0000000000000000 0x810
+ 0x0000000000000000 code = .
+ 0x0000000000000000 _code = .
+ *(.A)
+ .A 0x0000000000000000 0x24 /home/hatsune/menuetos/stub/crt0.o
+ 0x0000000000000000 __menuet__app_header
+ 0x0000000000000014 __menuet__memsize
+ *(.text)
+ .text 0x0000000000000024 0x0 /home/hatsune/menuetos/stub/crt0.o
+ 0x0000000000000024 start
+ .text 0x0000000000000024 0x0 freebios.o
+ .text 0x0000000000000024 0x0 /home/hatsune/menuetos/lib/libc.a(param.o)
+ .text 0x0000000000000024 0x40 /home/hatsune/menuetos/lib/libc.a(crt1.o)
+ 0x0000000000000024 __crt1_startup
+ .text 0x0000000000000064 0x15c /home/hatsune/menuetos/lib/libc.a(brk.o)
+ 0x0000000000000064 init_brk
+ 0x00000000000000b8 sbrk
+ .text 0x00000000000001c0 0x140 /home/hatsune/menuetos/lib/libc.a(crt0.o)
+ 0x0000000000000243 _exit
+ 0x000000000000024d __crt0_setup_arguments
+ .text 0x0000000000000300 0x78 /home/hatsune/menuetos/lib/libc.a(emu_init.o)
+ 0x0000000000000300 dosemu_inithandles
+ 0x0000000000000345 init_dir_stack
+ .text 0x0000000000000378 0x3c /home/hatsune/menuetos/lib/libc.a(_main.o)
+ 0x0000000000000378 __main
+ .text 0x00000000000003b4 0x24 /home/hatsune/menuetos/lib/libc.a(exit.o)
+ 0x00000000000003b4 exit
+ .text 0x00000000000003d8 0xc /home/hatsune/menuetos/lib/libc.a(errno.o)
+ 0x00000000000003d8 __isatty
+ .text 0x00000000000003e4 0x384 /home/hatsune/menuetos/lib/libc.a(malloc.o)
+ 0x00000000000004b1 malloc
+ 0x0000000000000667 free
+ 0x0000000000000705 realloc
+ .text 0x0000000000000768 0x18 /home/hatsune/menuetos/lib/libc.a(strlen.o)
+ 0x0000000000000768 strlen
+ .text 0x0000000000000780 0x1c /home/hatsune/menuetos/lib/libc.a(strcpy.o)
+ 0x0000000000000780 strcpy
+ .text 0x000000000000079c 0x24 /home/hatsune/menuetos/lib/libc.a(strrchr.o)
+ 0x000000000000079c strrchr
+ .text 0x00000000000007c0 0x24 /home/hatsune/menuetos/lib/libc.a(delay.o)
+ 0x00000000000007c0 __menuet__delay100
+ 0x00000000000007d1 __menuet(int, double, long,...)
+ .text 0x00000000000007e4 0x2c /home/hatsune/menuetos/lib/libc.a(memcpy.o)
+ 0x00000000000007e4 memcpy
+ *(.fixup)
+ *(.gnu.warning)
+ *(.gnu.linkonce.t*)
+ *(.const)
+ *(.ro*)
+ *(.gnu.linkonce.r*)
+ 0x0000000000000810 ecode = .
+ 0x0000000000000810 _ecode = .
+
+.rdata 0x0000000000000810 0x1130
+ .rdata 0x0000000000000810 0x1000 freebios.o
+ 0x0000000000000810 FreeBIOS
+ .rdata$zzz 0x0000000000001810 0x14 freebios.o
+ .rdata$zzz 0x0000000000001824 0x14 /home/hatsune/menuetos/lib/libc.a(param.o)
+ .rdata$zzz 0x0000000000001838 0x14 /home/hatsune/menuetos/lib/libc.a(crt1.o)
+ .rdata$zzz 0x000000000000184c 0x14 /home/hatsune/menuetos/lib/libc.a(brk.o)
+ .rdata$zzz 0x0000000000001860 0x14 /home/hatsune/menuetos/lib/libc.a(crt0.o)
+ .rdata$zzz 0x0000000000001874 0x14 /home/hatsune/menuetos/lib/libc.a(emu_init.o)
+ .rdata$zzz 0x0000000000001888 0x14 /home/hatsune/menuetos/lib/libc.a(_main.o)
+ .rdata$zzz 0x000000000000189c 0x14 /home/hatsune/menuetos/lib/libc.a(exit.o)
+ .rdata$zzz 0x00000000000018b0 0x14 /home/hatsune/menuetos/lib/libc.a(errno.o)
+ .rdata$zzz 0x00000000000018c4 0x14 /home/hatsune/menuetos/lib/libc.a(malloc.o)
+ .rdata$zzz 0x00000000000018d8 0x14 /home/hatsune/menuetos/lib/libc.a(strlen.o)
+ .rdata$zzz 0x00000000000018ec 0x14 /home/hatsune/menuetos/lib/libc.a(strcpy.o)
+ .rdata$zzz 0x0000000000001900 0x14 /home/hatsune/menuetos/lib/libc.a(strrchr.o)
+ .rdata$zzz 0x0000000000001914 0x14 /home/hatsune/menuetos/lib/libc.a(delay.o)
+ .rdata$zzz 0x0000000000001928 0x14 /home/hatsune/menuetos/lib/libc.a(memcpy.o)
+
+.data 0x000000000000193c 0x4e0
+ 0x000000000000193c djgpp_first_ctor = .
+ *(.ctor)
+ *(.ctors)
+ 0x000000000000193c djgpp_last_ctor = .
+ 0x000000000000193c djgpp_first_dtor = .
+ *(.dtor)
+ *(.dtors)
+ 0x000000000000193c djgpp_last_dtor = .
+ *(.gcc_exc*)
+ 0x000000000000193c __EH_FRAME_BEGIN__ = .
+ *(.eh_fram*)
+ .eh_frame 0x000000000000193c 0x34 /home/hatsune/menuetos/lib/libc.a(crt1.o)
+ .eh_frame 0x0000000000001970 0x68 /home/hatsune/menuetos/lib/libc.a(brk.o)
+ .eh_frame 0x00000000000019d8 0x9c /home/hatsune/menuetos/lib/libc.a(crt0.o)
+ .eh_frame 0x0000000000001a74 0x58 /home/hatsune/menuetos/lib/libc.a(emu_init.o)
+ .eh_frame 0x0000000000001acc 0x40 /home/hatsune/menuetos/lib/libc.a(_main.o)
+ .eh_frame 0x0000000000001b0c 0x34 /home/hatsune/menuetos/lib/libc.a(exit.o)
+ .eh_frame 0x0000000000001b40 0x38 /home/hatsune/menuetos/lib/libc.a(errno.o)
+ .eh_frame 0x0000000000001b78 0x140 /home/hatsune/menuetos/lib/libc.a(malloc.o)
+ .eh_frame 0x0000000000001cb8 0x3c /home/hatsune/menuetos/lib/libc.a(strlen.o)
+ .eh_frame 0x0000000000001cf4 0x40 /home/hatsune/menuetos/lib/libc.a(strcpy.o)
+ .eh_frame 0x0000000000001d34 0x3c /home/hatsune/menuetos/lib/libc.a(strrchr.o)
+ .eh_frame 0x0000000000001d70 0x60 /home/hatsune/menuetos/lib/libc.a(delay.o)
+ .eh_frame 0x0000000000001dd0 0x40 /home/hatsune/menuetos/lib/libc.a(memcpy.o)
+ 0x0000000000001e10 __EH_FRAME_END__ = .
+ 0x0000000000001e10 0x4 LONG 0x0
+ *(.gnu.linkonce.d*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.data)
+ .data 0x0000000000001e14 0x0 freebios.o
+ .data 0x0000000000001e14 0x0 /home/hatsune/menuetos/lib/libc.a(param.o)
+ .data 0x0000000000001e14 0x4 /home/hatsune/menuetos/lib/libc.a(crt1.o)
+ 0x0000000000001e14 __bss_count
+ .data 0x0000000000001e18 0x0 /home/hatsune/menuetos/lib/libc.a(brk.o)
+ .data 0x0000000000001e18 0x0 /home/hatsune/menuetos/lib/libc.a(crt0.o)
+ .data 0x0000000000001e18 0x0 /home/hatsune/menuetos/lib/libc.a(emu_init.o)
+ .data 0x0000000000001e18 0x4 /home/hatsune/menuetos/lib/libc.a(_main.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(exit.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(errno.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(malloc.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(strlen.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(strcpy.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(strrchr.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(delay.o)
+ .data 0x0000000000001e1c 0x0 /home/hatsune/menuetos/lib/libc.a(memcpy.o)
+ 0x0000000000001e1c edata = .
+ 0x0000000000001e1c _edata = .
+ 0x0000000000001e1c bss = .
+
+.bss 0x0000000000001e1c 0x190bc
+ *(.bss)
+ .bss 0x0000000000001e1c 0x10000 /home/hatsune/menuetos/stub/crt0.o
+ .bss 0x0000000000011e1c 0x0 freebios.o
+ .bss 0x0000000000011e1c 0x800 /home/hatsune/menuetos/lib/libc.a(param.o)
+ 0x0000000000011e1c __menuet__app_path_area
+ 0x000000000001221c __menuet__app_param_area
+ .bss 0x000000000001261c 0x14 /home/hatsune/menuetos/lib/libc.a(crt1.o)
+ 0x000000000001261c __dos_argv0
+ 0x0000000000012620 __crt0_argv
+ 0x0000000000012624 __crt0_argc
+ 0x0000000000012628 _crt0_startup_flags
+ 0x000000000001262c environ
+ .bss 0x0000000000012630 0x18 /home/hatsune/menuetos/lib/libc.a(brk.o)
+ .bss 0x0000000000012648 0x0 /home/hatsune/menuetos/lib/libc.a(crt0.o)
+ .bss 0x0000000000012648 0x8800 /home/hatsune/menuetos/lib/libc.a(emu_init.o)
+ 0x0000000000012648 __curdir_buf
+ 0x0000000000012a48 _io_handles
+ .bss 0x000000000001ae48 0x0 /home/hatsune/menuetos/lib/libc.a(_main.o)
+ .bss 0x000000000001ae48 0x8 /home/hatsune/menuetos/lib/libc.a(exit.o)
+ 0x000000000001ae48 keypress_at_exit
+ 0x000000000001ae4c __atexit_ptr
+ .bss 0x000000000001ae50 0x4 /home/hatsune/menuetos/lib/libc.a(errno.o)
+ 0x000000000001ae50 errno
+ .bss 0x000000000001ae54 0x84 /home/hatsune/menuetos/lib/libc.a(malloc.o)
+ .bss 0x000000000001aed8 0x0 /home/hatsune/menuetos/lib/libc.a(strlen.o)
+ .bss 0x000000000001aed8 0x0 /home/hatsune/menuetos/lib/libc.a(strcpy.o)
+ .bss 0x000000000001aed8 0x0 /home/hatsune/menuetos/lib/libc.a(strrchr.o)
+ .bss 0x000000000001aed8 0x0 /home/hatsune/menuetos/lib/libc.a(delay.o)
+ .bss 0x000000000001aed8 0x0 /home/hatsune/menuetos/lib/libc.a(memcpy.o)
+ 0x000000000001aed8 end = .
+ 0x000000000001aed8 _end = .
+ 0x000000000001aed8 ___memsize = .
+
+/DISCARD/
+ *(.debug$S)
+ *(.debug$T)
+ *(.debug$F)
+ *(.drectve)
+ *(.note.GNU-stack)
+ *(.eh_frame)
+ *(.comment)
+ *(.debug_abbrev)
+ *(.debug_info)
+ *(.debug_line)
+ *(.debug_frame)
+ *(.debug_loc)
+ *(.debug_pubnames)
+ *(.debug_aranges)
+ *(.debug_ranges)
+LOAD /home/hatsune/menuetos/stub/crt0.o
+LOAD freebios.o
+LOAD /home/hatsune/menuetos/lib/libm.a
+LOAD /home/hatsune/menuetos/lib/libc.a
+OUTPUT(noout pei-i386)