mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-11-01 00:15:14 +01:00
[What Was New 003]
- added: alphabetical file sorting - added: background logo/backdrop + nicer menus - added: scrolling in ROM selector - fixed: switching between pal/ntsc ROMS doesn't mess up timings - fixed: GC controller config works now - fixed: freeze autoloading on ROM load - fixed: zipped ROMS should now load in a reasonable time - fixed: precompiled dols for autosaving to various locations (see readme) - changed: GC default quickload slot (to sd) (thanks kerframil) - changed: default load/save dirs are now "/snes9x/roms" and "/snes/save/" (thanks kerframil) - changed: Classic X and Y defaults aren't switched - changed: if autosave is enabled, it doesn't ask to save SRAM anymore. It is saved in the background. - updated README
This commit is contained in:
parent
6892e8152e
commit
dee563ab2d
43
Makefile
43
Makefile
@ -1,4 +1,6 @@
|
|||||||
.PHONY = all wii gc wii-clean gc-clean wii-run gc-run
|
.PHONY = all wii gc wii-clean gc-clean wii-run gc-run mca mcb sd smb mca-clean mcb-clean sd-clean smb-clean specials specials-clean
|
||||||
|
|
||||||
|
VERSION := 003
|
||||||
|
|
||||||
all: wii gc
|
all: wii gc
|
||||||
|
|
||||||
@ -21,3 +23,42 @@ gc-clean:
|
|||||||
|
|
||||||
gc-run:
|
gc-run:
|
||||||
$(MAKE) -f Makefile.gc run
|
$(MAKE) -f Makefile.gc run
|
||||||
|
|
||||||
|
# Custom Quicksave Versions
|
||||||
|
|
||||||
|
specials: sd mcb mca smb
|
||||||
|
|
||||||
|
specials-clean: mca-clean mcb-clean smb-clean sd-clean
|
||||||
|
|
||||||
|
mca:
|
||||||
|
touch source/ngc/snes9xGX.h
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=0" "LOADTYPE:='"MCSLOTA"'" "VERSION:=$(VERSION)" -f Makefile.wii
|
||||||
|
touch source/ngc/snes9xGX.h
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=0" "LOADTYPE:='"MCSLOTA"'" "VERSION:=$(VERSION)" -f Makefile.gc
|
||||||
|
mca-clean:
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=0" "LOADTYPE:='"MCSLOTA"'" "VERSION:=$(VERSION)" -f Makefile.wii clean
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=0" "LOADTYPE:='"MCSLOTA"'" "VERSION:=$(VERSION)" -f Makefile.gc clean
|
||||||
|
|
||||||
|
mcb:
|
||||||
|
touch source/ngc/snes9xGX.h
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=1" "LOADTYPE:='"MCSLOTB"'" "VERSION:=$(VERSION)" -f Makefile.wii
|
||||||
|
touch source/ngc/snes9xGX.h
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=1" "LOADTYPE:='"MCSLOTB"'" "VERSION:=$(VERSION)" -f Makefile.gc
|
||||||
|
mcb-clean:
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=1" "LOADTYPE:='"MCSLOTB"'" "VERSION:=$(VERSION)" -f Makefile.wii clean
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=1" "LOADTYPE:='"MCSLOTB"'" "VERSION:=$(VERSION)" -f Makefile.gc clean
|
||||||
|
|
||||||
|
sd:
|
||||||
|
touch source/ngc/snes9xGX.h
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=3" "LOADTYPE:='"SD"'" "VERSION:=$(VERSION)" -f Makefile.wii
|
||||||
|
touch source/ngc/snes9xGX.h
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=3" "LOADTYPE:='"SD"'" "VERSION:=$(VERSION)" -f Makefile.gc
|
||||||
|
sd-clean:
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=3" "LOADTYPE:='"SD"'" "VERSION:=$(VERSION)" -f Makefile.wii clean
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=3" "LOADTYPE:='"SD"'" "VERSION:=$(VERSION)" -f Makefile.gc clean
|
||||||
|
|
||||||
|
smb:
|
||||||
|
touch source/ngc/snes9xGX.h
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=4" "LOADTYPE:='"SMB"'" "VERSION:=$(VERSION)" -f Makefile.gc
|
||||||
|
smb-clean:
|
||||||
|
$(MAKE) "CUSTOMFLAGS:=-DQUICK_SAVE_SLOT=4" "LOADTYPE:='"SMB"'" "VERSION:=$(VERSION)" -f Makefile.gc clean
|
12
Makefile.gc
12
Makefile.gc
@ -9,13 +9,16 @@ endif
|
|||||||
|
|
||||||
include $(DEVKITPPC)/gamecube_rules
|
include $(DEVKITPPC)/gamecube_rules
|
||||||
|
|
||||||
|
LOADTYPE = '"sd"'
|
||||||
|
VERSION = '"version"'
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# TARGET is the name of the output
|
# TARGET is the name of the output
|
||||||
# BUILD is the directory where object files & intermediate files will be placed
|
# BUILD is the directory where object files & intermediate files will be placed
|
||||||
# SOURCES is a list of directories containing source code
|
# SOURCES is a list of directories containing source code
|
||||||
# INCLUDES is a list of directories containing extra header files
|
# INCLUDES is a list of directories containing extra header files
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
TARGET := snes9xgx-mm-gc
|
TARGET := executables/snes9xgx-$(VERSION)-$(LOADTYPE)-gc
|
||||||
BUILD := build_gc
|
BUILD := build_gc
|
||||||
SOURCES := source/snes9x source/unzip source/ngc source/smb
|
SOURCES := source/snes9x source/unzip source/ngc source/smb
|
||||||
DATA := data
|
DATA := data
|
||||||
@ -25,18 +28,19 @@ INCLUDES := source/snes9x source/unzip source/ngc source/smb
|
|||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CUSTOMFLAGS = -DQUICK_SAVE_SLOT=1 -DSMB_SVID='"Crunchewy"' \
|
||||||
|
-DSMB_IP='"192.168.1.111"' -DGW_IP='"192.168.1.1"'
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) \
|
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) \
|
||||||
-DNGC -DNO_ASM -DCPU_SHUTDOWN -DSPC700C \
|
-DNGC -DNO_ASM -DCPU_SHUTDOWN -DSPC700C \
|
||||||
-DSPC700_SHUTDOWN -DNEW_COLOUR_BLENDING \
|
-DSPC700_SHUTDOWN -DNEW_COLOUR_BLENDING \
|
||||||
-DNO_INLINE_GET_SET -DSDD1_DECOMP -DCORRECT_VRAM_READS \
|
-DNO_INLINE_GET_SET -DSDD1_DECOMP -DCORRECT_VRAM_READS \
|
||||||
-DDETECT_NASTY_FX_INTERLEAVE -DNGC_ZOOM -DSDUSE_LFN \
|
-DDETECT_NASTY_FX_INTERLEAVE -DNGC_ZOOM -DSDUSE_LFN \
|
||||||
-DQUICK_SAVE_SLOT=4 -DSMB_SVID='"Crunchewy"' \
|
-DFORCE_WII=0 $(CUSTOMFLAGS) \
|
||||||
-DSMB_IP='"192.168.1.111"' -DGW_IP='"192.168.1.1"' -DFORCE_WII=0 \
|
|
||||||
-fomit-frame-pointer -fno-exceptions -Wno-unused-parameter -pipe
|
-fomit-frame-pointer -fno-exceptions -Wno-unused-parameter -pipe
|
||||||
CXXFLAGS = $(CFLAGS)
|
CXXFLAGS = $(CFLAGS)
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
||||||
# -mogc
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# any extra libraries we wish to link with the project
|
# any extra libraries we wish to link with the project
|
||||||
|
13
Makefile.wii
13
Makefile.wii
@ -9,13 +9,17 @@ endif
|
|||||||
|
|
||||||
include $(DEVKITPPC)/wii_rules
|
include $(DEVKITPPC)/wii_rules
|
||||||
|
|
||||||
|
|
||||||
|
LOADTYPE = '"sd"'
|
||||||
|
VERSION = '"version"'
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# TARGET is the name of the output
|
# TARGET is the name of the output
|
||||||
# BUILD is the directory where object files & intermediate files will be placed
|
# BUILD is the directory where object files & intermediate files will be placed
|
||||||
# SOURCES is a list of directories containing source code
|
# SOURCES is a list of directories containing source code
|
||||||
# INCLUDES is a list of directories containing extra header files
|
# INCLUDES is a list of directories containing extra header files
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
TARGET := snes9xgx-mm-wii
|
TARGET := executables/snes9xgx-$(VERSION)-$(LOADTYPE)-wii
|
||||||
BUILD := build_wii
|
BUILD := build_wii
|
||||||
SOURCES := source/snes9x source/unzip source/ngc source/smb
|
SOURCES := source/snes9x source/unzip source/ngc source/smb
|
||||||
DATA := data
|
DATA := data
|
||||||
@ -25,18 +29,19 @@ INCLUDES := source/snes9x source/unzip source/ngc source/smb
|
|||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CUSTOMFLAGS = -DQUICK_SAVE_SLOT=3 -DSMB_SVID='"Crunchewy"' \
|
||||||
|
-DSMB_IP='"192.168.1.111"' -DGW_IP='"192.168.1.1"'
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) \
|
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) \
|
||||||
-DNGC -DHW_RVL -DNO_ASM -DCPU_SHUTDOWN -DSPC700C \
|
-DNGC -DHW_RVL -DNO_ASM -DCPU_SHUTDOWN -DSPC700C \
|
||||||
-DSPC700_SHUTDOWN -DNEW_COLOUR_BLENDING \
|
-DSPC700_SHUTDOWN -DNEW_COLOUR_BLENDING \
|
||||||
-DNO_INLINE_GET_SET -DSDD1_DECOMP -DCORRECT_VRAM_READS \
|
-DNO_INLINE_GET_SET -DSDD1_DECOMP -DCORRECT_VRAM_READS \
|
||||||
-DDETECT_NASTY_FX_INTERLEAVE -DNGC_ZOOM -DSDUSE_LFN \
|
-DDETECT_NASTY_FX_INTERLEAVE -DNGC_ZOOM -DSDUSE_LFN \
|
||||||
-DQUICK_SAVE_SLOT=3 -DSMB_SVID='"Crunchewy"' \
|
-DFORCE_WII=1 $(CUSTOMFLAGS)\
|
||||||
-DSMB_IP='"192.168.1.111"' -DGW_IP='"192.168.1.1"' -DFORCE_WII=1 \
|
|
||||||
-fomit-frame-pointer -fno-exceptions -Wno-unused-parameter -pipe
|
-fomit-frame-pointer -fno-exceptions -Wno-unused-parameter -pipe
|
||||||
CXXFLAGS = $(CFLAGS)
|
CXXFLAGS = $(CFLAGS)
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
||||||
# -mogc
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# any extra libraries we wish to link with the project
|
# any extra libraries we wish to link with the project
|
||||||
|
470
README.txt
470
README.txt
@ -10,28 +10,30 @@
|
|||||||
———————————————————————————————————————————————————————————————————————•ßrK•
|
———————————————————————————————————————————————————————————————————————•ßrK•
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|0O×øo· SNES9XGX v2.0.1b8 ·oø×O0|
|
|0O×øo· SNES9XGX v003 ·oø×O0|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
*******************************************************************************
|
PLEASE NOTE: THIS DOCUMENT IS A WORK IN PROGRESS
|
||||||
PLEASE NOTE: THIS DOCUMENT IS A WORK IN PROGRESS - IT IS INCOMPLETE AND SOME OF
|
|
||||||
THE INFORMATION IS OUT OF DATE
|
|
||||||
*******************************************************************************
|
|
||||||
|
|
||||||
Welcome to the revolution in GameCube emulators! SNES9X is by far the most
|
[What's New 003]
|
||||||
complete and accurate Super Nintendo Entertainment System emulator to date.
|
|
||||||
Taking full power of the ATi-GX chipset and packed full of features that are
|
|
||||||
to die for after playing your games you'll never want to come back to
|
|
||||||
reality.
|
|
||||||
|
|
||||||
SNES9X is a very popular open source emulator mainly for the PC platform, but
|
- added: alphabetical file sorting
|
||||||
has seen many ports to other consoles such as the Nintendo DS, Microsoft XBOX
|
- added: background logo/backdrop + nicer menus
|
||||||
and now thanks to SoftDev the Nintendo GameCube! This is a straight port and
|
- added: scrolling in ROM selector
|
||||||
is not based on any previous SNES emulators that have existed for the
|
- fixed: switching between pal/ntsc ROMS doesn't mess up timings
|
||||||
GameCube. You can get more information on SNES9X here from the below URL.
|
- fixed: GC controller config works now
|
||||||
http://snes9x.ipherswipsite.com/
|
- fixed: freeze autoloading on ROM load
|
||||||
|
- fixed: zipped ROMS should now load in a reasonable time
|
||||||
|
- fixed: precompiled dols for autosaving to various locations (see readme)
|
||||||
|
- changed: GC default quickload slot (to sd) (thanks kerframil)
|
||||||
|
- changed: default load/save dirs are now "/snes9x/roms" and
|
||||||
|
"/snes/save/" (thanks kerframil)
|
||||||
|
- changed: Classic X and Y defaults aren't switched
|
||||||
|
- changed: if autosave is enabled, it doesn't ask to save SRAM
|
||||||
|
anymore. It is saved in the background.
|
||||||
|
- updated README
|
||||||
|
|
||||||
[What's New 002]
|
[Whats Was New 002]
|
||||||
- added: classic and nunchuk support
|
- added: classic and nunchuk support
|
||||||
- added: all controllers can now be configured
|
- added: all controllers can now be configured
|
||||||
- added: GC version (untested)
|
- added: GC version (untested)
|
||||||
@ -49,6 +51,227 @@ http://snes9x.ipherswipsite.com/
|
|||||||
- fixed: autoload sram/freeze
|
- fixed: autoload sram/freeze
|
||||||
- fixed: rom plays immediately after loading
|
- fixed: rom plays immediately after loading
|
||||||
|
|
||||||
|
[older update history at the bottom]
|
||||||
|
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· FEATURES ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
- Based on Snes9x 1.5 - superior ROM compatibility
|
||||||
|
- Auto Load/Save Freeze States and SRAM
|
||||||
|
- Custom controller configurations
|
||||||
|
- Wiimote, Nunchuk, Classic, and Gamecube controller support
|
||||||
|
- Autodetect PAL/NTSC
|
||||||
|
- Zip Support
|
||||||
|
- Open Source!
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· SETUP & INSTALLATION ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
|
Unzip the archive into a folder. You'll find 4 variations of the dol for both
|
||||||
|
wii and gamecube versions. The variants auto save and load preferences and sram
|
||||||
|
to/from different locations as follows (you can also manually save and load
|
||||||
|
SRAM to any location).
|
||||||
|
[A default version is provided for quick install. See loading from HBC below.]
|
||||||
|
|
||||||
|
filename preferences/sram autoloading location
|
||||||
|
------------------------- -------------------------------------
|
||||||
|
snes9xGX-003-sd-xxxx.dol SD card
|
||||||
|
snes9xGX-003-mcslota-xxxx.dol Memory card in slot A
|
||||||
|
snes9xGX-003-mcslotb-xxxx.dol Memory card in slot B
|
||||||
|
snes9xGX-003-smb-xxxx.dol SMB share (see SMB section below)
|
||||||
|
snes9xGX-003-noload-xxxx.dol none - doesn't load prefs nor autosave SRAM
|
||||||
|
|
||||||
|
The last part of the filename (shown above as xxxx), denotes the wii and gamecube
|
||||||
|
versions.
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
ROMS, Preferences, and Saves:
|
||||||
|
----------------------------
|
||||||
|
Your SNES rom images must be in the Super Magicom (SMC) or FIG format. Generally,
|
||||||
|
all images you find will be in this format, but if you run across one that isn't
|
||||||
|
please download RTOOL which will allow you to convert the image into SMC format.
|
||||||
|
|
||||||
|
|
||||||
|
Wii
|
||||||
|
----------
|
||||||
|
On the Wii, you can load roms from any SD card (Front SD, SD Gecko, etc).
|
||||||
|
By default, ROMs are loaded from "snes9x/roms/" and saves and preferences are
|
||||||
|
stored in "snes9x/saves/". Therefore, on your SD card, you should have the following
|
||||||
|
folders:
|
||||||
|
|
||||||
|
snes9x/
|
||||||
|
roms/
|
||||||
|
saves/
|
||||||
|
|
||||||
|
|
||||||
|
Gamecube
|
||||||
|
------------
|
||||||
|
You can load roms from DVD, SD card or SMB share. If you wish to use an SD card
|
||||||
|
or SMB share, you must create the same folder tree as above. Put your roms in the
|
||||||
|
"snes9x/roms" folder. On DVD you can either place your roms at the top level, or
|
||||||
|
optionally you may have an SNESROMS folder at the top level of the DVD, in which
|
||||||
|
case the game selectorwill default to showing that folder when first entered.
|
||||||
|
If you create a bootable DVD of Snes9xGx you can put roms on the same DVD.
|
||||||
|
|
||||||
|
------------------------------
|
||||||
|
Loading / Running the Emulator:
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
Via Homebrew Channel:
|
||||||
|
--------------------
|
||||||
|
The most popular method of running homebrew on the wii is through the Homebrew
|
||||||
|
Channel. If you already have the channel installed, just copy over the apps folder
|
||||||
|
included in the archive into the root of your SD card (the SD autosaving version
|
||||||
|
for wii is included in the apps/Snes9xGX/ folder renamed to boot.dol).
|
||||||
|
|
||||||
|
Remember to also create the snes9x/roms and snes9x/saves directories. See above.
|
||||||
|
|
||||||
|
If you wish to use a version that autosaves to other available saving locations,
|
||||||
|
just choose the appropriate dol, copy it into the apps/Snes9XGX/ folder, and
|
||||||
|
RENAME it to boot.dol (remove the other version). Then proceed to copy
|
||||||
|
the entire apps folder to your sd card and run it with the HBC.
|
||||||
|
|
||||||
|
If you haven't installed the homebrew channel yet, read about how to here:
|
||||||
|
http://hbc.hackmii.com/
|
||||||
|
|
||||||
|
|
||||||
|
Gamecube:
|
||||||
|
---------
|
||||||
|
You can load it via sdload and an SD card in slot A, or by streaming it to your
|
||||||
|
cube, or by booting a bootable DVD (gamecube only) with it on it. This document doesn't cover
|
||||||
|
how to do any of that. A good source for information on these topics is the
|
||||||
|
tehskeen forums:
|
||||||
|
|
||||||
|
http://www.tehskeen.com/forums/
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· ABOUT SNES9X ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
Welcome to the revolution in GameCube emulators! SNES9X is by far the most
|
||||||
|
complete and accurate Super Nintendo Entertainment System emulator to date.
|
||||||
|
Taking full power of the ATi-GX chipset and packed full of features that are
|
||||||
|
to die for after playing your games you'll never want to come back to
|
||||||
|
reality.
|
||||||
|
|
||||||
|
SNES9X is a very popular open source emulator mainly for the PC platform, but
|
||||||
|
has seen many ports to other consoles such as the Nintendo DS, Microsoft XBOX
|
||||||
|
and now thanks to SoftDev the Nintendo GameCube! This is a straight port and
|
||||||
|
is not based on any previous SNES emulators that have existed for the
|
||||||
|
GameCube. You can get more information on SNES9X here from the below URL.
|
||||||
|
http://snes9x.ipherswipsite.com/
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· DEFAULT CONTROLLER MAPPING ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
|
NOTE: You can change the controller configurations to your liking in the menu
|
||||||
|
under the Config Controllers option.
|
||||||
|
|
||||||
|
Below are the default button mappings for supported controllers. The wiimote
|
||||||
|
configuration allows you to play with the wiimote held sideways.
|
||||||
|
|
||||||
|
Wiimote SNES Nunchuk SNES
|
||||||
|
--------------------- ---------------------
|
||||||
|
1 Y Z Y
|
||||||
|
2 B B B
|
||||||
|
A A A A
|
||||||
|
B X C X
|
||||||
|
- SELECT 2 SELECT
|
||||||
|
+ START 1 START
|
||||||
|
HOME Emulator menu HOME Emulator menu
|
||||||
|
LT - LT
|
||||||
|
RT + RT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Classic SNES GC PAD SNES
|
||||||
|
--------------------- ---------------------
|
||||||
|
X X Y Y
|
||||||
|
B B B B
|
||||||
|
A A A A
|
||||||
|
Y Y X X
|
||||||
|
- SELECT Z SELECT
|
||||||
|
+ START START START
|
||||||
|
HOME Emulator menu
|
||||||
|
LT LT LT LT
|
||||||
|
RT RT RT RT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· ZIP SUPPORT ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
|
The Zip support in the emulator is courtesy of the zlib library. Currently,
|
||||||
|
it supports only the Inflate method.
|
||||||
|
|
||||||
|
The good news is that this is by far the most common zip method!
|
||||||
|
|
||||||
|
You should note also that this implementation assumes that the first file
|
||||||
|
in each archive is the required rom in smc/fig format.
|
||||||
|
|
||||||
|
In an attempt to save you time, we recommend using 7-Zip as the compressor,
|
||||||
|
as it gives a gain of 5-25% better compression over standard zips. This being
|
||||||
|
said, you can very well use WinZip or any other zip utility to create your zipped
|
||||||
|
ROMs.
|
||||||
|
|
||||||
|
To use 7-Zip compression on either linux or windows, use the following command:
|
||||||
|
|
||||||
|
7za a -tzip -mx=9 myrom.zip myrom.smc
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· MAIN MENU ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
|
Once the DOL file is loaded you will be presented with main menu where you can
|
||||||
|
load a ROM, set options for the emulator, set the joypad configuration, save or
|
||||||
|
load freezes, manage SRAM, etc.
|
||||||
|
After loading a game the game will start running immediately. If you have the
|
||||||
|
auto-load SRAM option enabled it will automatically load SRAM (if it exists)
|
||||||
|
before starting play.
|
||||||
|
|
||||||
|
You can return to the main menu at any time by pressing
|
||||||
|
the c-stick (the yellow control stick) to the left, or by pressing L+R+X+Y.
|
||||||
|
Return to the game by selecting "Resume Game" or by pressing the B button until
|
||||||
|
play resumes.
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· TURBO MODE ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
|
TurboMode increases the playback speed of the game by about 2x. To use TurboMode
|
||||||
|
simply press the c-stick (yellow control stick) to the right and hold it right
|
||||||
|
as long as you want playback to be double-speed. Release the c-stick when you
|
||||||
|
want normal playback speed to resume.
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· IMPORTING AND EXPORTING SRAM ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
|
Snes9xGx 2.0.1 now includes the ability to load SRAM from Snes9x on other
|
||||||
|
platforms (Mac/PC/Linux/Etc) and to save back to those platforms. To use this
|
||||||
|
feature simply save or load SRAM to/from SD card or an SMB share.
|
||||||
|
|
||||||
|
The only thing to be aware of is that Snes9xGx requires that the SRM file have a
|
||||||
|
name that is the rom name (not necessarily the same as the file name!) with .SRM
|
||||||
|
at the end. For example, the game "Super Mario All-Stars + World" has a rom name
|
||||||
|
of "ALL_STARS + WORLD", so the SRAM file should have the name "ALL_STARS +
|
||||||
|
WORLD.srm". You can see the rom name for a game by loading the game - the rom
|
||||||
|
name is shown in the information that is briefly shown at the bottom of the
|
||||||
|
screen. A perhaps easier way to find the correct name is simply to load the game
|
||||||
|
and then save SRAM to SD or SMB and look at the filename that Snes9xGx uses.
|
||||||
|
That's the name you should use when importing an SRAM from another platform.
|
||||||
|
|
||||||
|
To use an Snes9xGx SRAM on another platform just do the opposite: save SRAM to
|
||||||
|
SD or SMB, and then copy that saved SRAM file to the other platform. You may
|
||||||
|
have to rename the file to be what that version of snes9x expects it to be.
|
||||||
|
|
||||||
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|
|0O×øo· UPDATE HISTORY (old) ·oø×O0|
|
||||||
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
||||||
|
|
||||||
[What Was New 2.0.1b8]
|
[What Was New 2.0.1b8]
|
||||||
* Added: SD slot B options for freezes, sram and loading of roms
|
* Added: SD slot B options for freezes, sram and loading of roms
|
||||||
* Changed: SMB options no longer displayed in menus when run on a Wii
|
* Changed: SMB options no longer displayed in menus when run on a Wii
|
||||||
@ -166,207 +389,6 @@ changes to the emulator settings again and save them.
|
|||||||
* Analog Clip
|
* Analog Clip
|
||||||
* XenoGC Support (GC-Linux Homebrew DVD Compatibility)
|
* XenoGC Support (GC-Linux Homebrew DVD Compatibility)
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· SETUP & INSTALLATION ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
Unzip the archive into a folder. You'll find 6 variations of the dol, along
|
|
||||||
with an "inject" tool for (optionally) injecting a rom into a dol. The six
|
|
||||||
variants auto save and load preferences and sram to/from different locations
|
|
||||||
as follows (you can also manually save and load SRAM to any location):
|
|
||||||
|
|
||||||
filename preferences/sram autoloading location
|
|
||||||
------------------------- -------------------------------------
|
|
||||||
snes9xGx201b8-mcslota.dol Memory card in slot A
|
|
||||||
snes9xGx201b8-mcslotb.dol Memory card in slot B
|
|
||||||
snes9xGx201b8-sdslota.dol SD card in SD adapter in slot A
|
|
||||||
snes9xGx201b8-sdslotb.dol SD card in SD adapter in slot B
|
|
||||||
snes9xGx201b8-smb.dol SMB share (see SMB section below)
|
|
||||||
snes9xGx201b8-noload.dol none - doesn't load prefs nor autosave SRAM
|
|
||||||
|
|
||||||
|
|
||||||
Your SNES rom images must be in the Super Magicom (SMC) or FIG format. Generally,
|
|
||||||
all images you find will be in this format, but if you run across one that isn't
|
|
||||||
please download RTOOL which will allow you to convert the image into SMC format.
|
|
||||||
|
|
||||||
You can load roms from DVD, SD card or SMB share. If you wish to use an SD card
|
|
||||||
or SMB share, you must create an SNESROMS and an SNESSAVE folder at the top
|
|
||||||
level (root) of the card or share. Put your roms in the SNESROMS folder. On DVD
|
|
||||||
you can either place your roms at the top level, or optionally you may have an
|
|
||||||
SNESROMS folder at the top level of the DVD, in which case the game selector
|
|
||||||
will default to showing that folder when first entered. If you create a bootable
|
|
||||||
DVD of Snes9xGx you can put roms on the same DVD.
|
|
||||||
|
|
||||||
Now that you have that set up all you need to do is load the dol of your choice.
|
|
||||||
You can load it via sdload and an SD card in slot A, or by streaming it to your
|
|
||||||
cube, or by booting a bootable DVD with it on it. This document doesn't cover
|
|
||||||
how to do any of that. A good source for information on these topics is the
|
|
||||||
tehskeen forums:
|
|
||||||
|
|
||||||
http://www.tehskeen.com/forums/
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· DEFAULT CONTROLLER MAPPING ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
Wiimote SNES
|
|
||||||
---------------------
|
|
||||||
1 Y
|
|
||||||
2 B
|
|
||||||
A A
|
|
||||||
B X
|
|
||||||
- SELECT
|
|
||||||
+ START
|
|
||||||
HOME Emulator menu
|
|
||||||
LT
|
|
||||||
RT
|
|
||||||
|
|
||||||
This configuration allows you to play with the wiimote held sideways.
|
|
||||||
|
|
||||||
Nunchuk SNES
|
|
||||||
---------------------
|
|
||||||
Z Y
|
|
||||||
B B
|
|
||||||
A A
|
|
||||||
C X
|
|
||||||
2 SELECT
|
|
||||||
1 START
|
|
||||||
HOME Emulator menu
|
|
||||||
- LT
|
|
||||||
+ RT
|
|
||||||
|
|
||||||
Classic SNES
|
|
||||||
---------------------
|
|
||||||
X Y
|
|
||||||
B B
|
|
||||||
A A
|
|
||||||
Y X
|
|
||||||
- SELECT
|
|
||||||
+ START
|
|
||||||
HOME Emulator menu
|
|
||||||
LT LT
|
|
||||||
RT RT
|
|
||||||
|
|
||||||
GC PAD SNES
|
|
||||||
---------------------
|
|
||||||
Y Y
|
|
||||||
B B
|
|
||||||
A A
|
|
||||||
X X
|
|
||||||
Z SELECT
|
|
||||||
START START
|
|
||||||
LT LT
|
|
||||||
RT RT
|
|
||||||
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· PARTIAL PKZIP SUPPORT ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
The Zip support in the emulator is courtesy of the zlib library. Currently,
|
|
||||||
it supports only the Inflate method.
|
|
||||||
|
|
||||||
The good news is that this is by far the most common zip method!
|
|
||||||
|
|
||||||
You should note also that this implementation assumes that the first file
|
|
||||||
in each archive is the required rom in smc/fig format.
|
|
||||||
|
|
||||||
In an attempt to save you time, we recommend using 7-Zip as the compressor,
|
|
||||||
as it gives a gain of 5-25% better compression over standard zips.
|
|
||||||
|
|
||||||
To use 7-Zip compression on either linux or windows, use the following command:
|
|
||||||
|
|
||||||
7za a -tzip -mx=9 myrom.zip myrom.smc
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· MAIN MENU ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
Once the DOL file is loaded you will be presented with main menu where you can
|
|
||||||
load a rom from DVD, SD or SMB, set options for the emulator, set the joypad
|
|
||||||
configuration (on a per-game basis), save or load freezes, manage SRAM, etc.
|
|
||||||
After loading a game the game will start running immediately. If you have the
|
|
||||||
auto-load SRAM option enabled it will automatically load SRAM (if it exists)
|
|
||||||
before starting play. You can return to the main menu at any time by pressing
|
|
||||||
the c-stick (the yellow control stick) to the left, or by pressing L+R+X+Y.
|
|
||||||
Return to the game by selecting "Resume Game" or by pressing the B button until
|
|
||||||
play resumes.
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· TURBO MODE ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
TurboMode increases the playback speed of the game by about 2x. To use TurboMode
|
|
||||||
simply press the c-stick (yellow control stick) to the right and hold it right
|
|
||||||
as long as you want playback to be double-speed. Release the c-stick when you
|
|
||||||
want normal playback speed to resume.
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· IMPORTING AND EXPORTING SRAM ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
Snes9xGx 2.0.1 now includes the ability to load SRAM from Snes9x on other
|
|
||||||
platforms (Mac/PC/Linux/Etc) and to save back to those platforms. To use this
|
|
||||||
feature simply save or load SRAM to/from SD card or an SMB share.
|
|
||||||
|
|
||||||
The only thing to be aware of is that Snes9xGx requires that the SRM file have a
|
|
||||||
name that is the rom name (not necessarily the same as the file name!) with .SRM
|
|
||||||
at the end. For example, the game "Super Mario All-Stars + World" has a rom name
|
|
||||||
of "ALL_STARS + WORLD", so the SRAM file should have the name "ALL_STARS +
|
|
||||||
WORLD.srm". You can see the rom name for a game by loading the game - the rom
|
|
||||||
name is shown in the information that is briefly shown at the bottom of the
|
|
||||||
screen. A perhaps easier way to find the correct name is simply to load the game
|
|
||||||
and then save SRAM to SD or SMB and look at the filename that Snes9xGx uses.
|
|
||||||
That's the name you should use when importing an SRAM from another platform.
|
|
||||||
|
|
||||||
To use an Snes9xGx SRAM on another platform just do the opposite: save SRAM to
|
|
||||||
SD or SMB, and then copy that saved SRAM file to the other platform. You may
|
|
||||||
have to rename the file to be what that version of snes9x expects it to be.
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· INJECTING A ROM ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
Injecting a rom is not required to use snes9xGx, but if you primarily use
|
|
||||||
snes9xGx by streaming it to your cube you may wish to inject a rom into the dol.
|
|
||||||
In that case the game will start playing immediately once Snes9xGx loads. If you
|
|
||||||
have the auto-load SRAM option enabled it will load SRAM before starting the
|
|
||||||
game as well.
|
|
||||||
|
|
||||||
To inject a rom you use the "inject.exe" tool on Windows or the "inject" tool on
|
|
||||||
Mac OS X. This tool works at the command line and has syntax as follows:
|
|
||||||
|
|
||||||
inject original.dol gamerom.smc output.dol
|
|
||||||
|
|
||||||
On the Mac you will either need to copy the inject tool into a location that is
|
|
||||||
in your "PATH" or just go into the directory that has the inject tool in it and
|
|
||||||
proceed the command with "./" like this:
|
|
||||||
|
|
||||||
./inject original.dol gamerom.smc output.dol
|
|
||||||
|
|
||||||
Once you run the tool on your dol, just stream the outputted dol to your cube,
|
|
||||||
or otherwise load it and Snes9xGx will load and the game will start running.
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· WAVEBIRD WIRELESS CONTROLLER ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
This note applies to all homebrew GC software. The Wavebird wireless controller
|
|
||||||
CAN be used with homebrew, including Snes9xGx, but to enable it you must press a
|
|
||||||
button on the controller when you power up the GC and see the Gamecube logo.
|
|
||||||
This will initialize the controller and allow it to function in Snes9xGx and
|
|
||||||
other homebrew software.
|
|
||||||
|
|
||||||
You must do this each time you power up your Gamecube. Also, if you unplug the
|
|
||||||
wireless receiver while Snes9xGx is running and plug it back in, it will not
|
|
||||||
work - you will then have to plug in a wired controller to continue play. Until
|
|
||||||
someone figures out how to properly handle the Wavebird, this will continue to
|
|
||||||
be the case. My ears are open!
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
|
||||||
|0O×øo· SMB ·oø×O0|
|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
|
||||||
|
|
||||||
TBD
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|0O×øo· CREDITS ·oø×O0|
|
|0O×øo· CREDITS ·oø×O0|
|
||||||
@ -378,10 +400,9 @@ TBD
|
|||||||
GameCube Port 2.0 WIP6 and earlier - SoftDev
|
GameCube Port 2.0 WIP6 and earlier - SoftDev
|
||||||
Additional improvements to 2.0 WIP6 - eke-eke
|
Additional improvements to 2.0 WIP6 - eke-eke
|
||||||
GameCube 2.0.1bx enhancements - crunchy2
|
GameCube 2.0.1bx enhancements - crunchy2
|
||||||
v001 updates - michniewski
|
v00x updates - michniewski
|
||||||
GX - http://www.gc-linux.org
|
GX - http://www.gc-linux.org
|
||||||
Font - Qoob Team
|
libogc - Shagkur & wintermute
|
||||||
libogc - Shagkur
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
@ -389,9 +410,8 @@ TBD
|
|||||||
|
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
original by brakken/updated by crunchy2
|
brakken, crunchy2, michniewski
|
||||||
|
|
||||||
|
|
||||||
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
×—–—–—–—– –—–—–—–—–—–—–—–—–—–— —–—–—–—–—–—–—–—-—–-–•¬
|
||||||
|0O×øo· SNES9XGX v2.0.1b8 ·oø×O0|
|
|0O×øo· ·oø×O0|
|
||||||
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
`¨•¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨'
|
@ -31,7 +31,7 @@
|
|||||||
#include "ftfont.h"
|
#include "ftfont.h"
|
||||||
#include "video.h"
|
#include "video.h"
|
||||||
#include "aram.h"
|
#include "aram.h"
|
||||||
#include "ngcunzip.h"
|
#include "unzip.h"
|
||||||
#include "filesel.h"
|
#include "filesel.h"
|
||||||
#include "smbload.h"
|
#include "smbload.h"
|
||||||
#include "sdload.h"
|
#include "sdload.h"
|
||||||
@ -140,13 +140,17 @@ int selection = 0;
|
|||||||
int
|
int
|
||||||
FileSelector ()
|
FileSelector ()
|
||||||
{
|
{
|
||||||
u32 p, wp;
|
u32 p, wp, ph, wh;
|
||||||
signed char a;
|
signed char a, c;
|
||||||
int haverom = 0;
|
int haverom = 0;
|
||||||
int redraw = 1;
|
int redraw = 1;
|
||||||
int selectit = 0;
|
int selectit = 0;
|
||||||
float mag = 0;
|
float mag = 0;
|
||||||
u16 ang = 0;
|
u16 ang = 0;
|
||||||
|
int scroll_delay = 0;
|
||||||
|
bool move_selection = 0;
|
||||||
|
#define SCROLL_INITIAL_DELAY 15
|
||||||
|
#define SCROLL_LOOP_DELAY 4
|
||||||
|
|
||||||
while (haverom == 0)
|
while (haverom == 0)
|
||||||
{
|
{
|
||||||
@ -154,17 +158,25 @@ FileSelector ()
|
|||||||
ShowFiles (offset, selection);
|
ShowFiles (offset, selection);
|
||||||
redraw = 0;
|
redraw = 0;
|
||||||
|
|
||||||
|
VIDEO_WaitVSync(); // slow things down a bit so we don't overread the pads
|
||||||
|
|
||||||
p = PAD_ButtonsDown (0);
|
p = PAD_ButtonsDown (0);
|
||||||
|
ph = PAD_ButtonsHeld (0);
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
wp = WPAD_ButtonsDown (0);
|
wp = WPAD_ButtonsDown (0);
|
||||||
|
wh = WPAD_ButtonsHeld (0);
|
||||||
wpad_get_analogues(0, &mag, &ang); // get joystick info from wii expansions
|
wpad_get_analogues(0, &mag, &ang); // get joystick info from wii expansions
|
||||||
#else
|
#else
|
||||||
wp = 0;
|
wp = 0;
|
||||||
|
wh = 0;
|
||||||
#endif
|
#endif
|
||||||
a = PAD_StickY (0);
|
a = PAD_StickY (0);
|
||||||
|
c = PAD_SubStickX (0);
|
||||||
VIDEO_WaitVSync(); // slow things down a bit so we don't overread the pads
|
|
||||||
|
|
||||||
|
/*** Check for exit combo ***/
|
||||||
|
if ( (c < -70) || (wp & WPAD_BUTTON_HOME) || (wp & WPAD_CLASSIC_BUTTON_HOME) ) return 0;
|
||||||
|
|
||||||
|
/*** Check buttons, perform actions ***/
|
||||||
if ( (p & PAD_BUTTON_A) || selectit || (wp & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) )
|
if ( (p & PAD_BUTTON_A) || selectit || (wp & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) )
|
||||||
{
|
{
|
||||||
if ( selectit )
|
if ( selectit )
|
||||||
@ -274,28 +286,57 @@ FileSelector ()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} // End of B
|
} // End of B
|
||||||
if ( (p & PAD_BUTTON_DOWN) || (wp & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN)) || (a < -PADCAL) || (mag>JOY_THRESHOLD && (ang>130 && ang<230)) )
|
if ( ((p | ph) & PAD_BUTTON_DOWN) || ((wp | wh) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN)) || (a < -PADCAL) || (mag>JOY_THRESHOLD && (ang>130 && ang<230)) )
|
||||||
{
|
{
|
||||||
selection++;
|
if ( (p & PAD_BUTTON_DOWN) || (wp & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN)) ) { /*** Button just pressed ***/
|
||||||
if (selection == maxfiles)
|
scroll_delay = SCROLL_INITIAL_DELAY; // reset scroll delay.
|
||||||
selection = offset = 0;
|
move_selection = 1; //continue (move selection)
|
||||||
if ((selection - offset) >= PAGESIZE)
|
}
|
||||||
offset += PAGESIZE;
|
else if (scroll_delay == 0) { /*** Button is held ***/
|
||||||
redraw = 1;
|
scroll_delay = SCROLL_LOOP_DELAY;
|
||||||
|
move_selection = 1; //continue (move selection)
|
||||||
|
} else {
|
||||||
|
scroll_delay--; // wait
|
||||||
|
}
|
||||||
|
|
||||||
|
if (move_selection)
|
||||||
|
{
|
||||||
|
selection++;
|
||||||
|
if (selection == maxfiles)
|
||||||
|
selection = offset = 0;
|
||||||
|
if ((selection - offset) >= PAGESIZE)
|
||||||
|
offset += PAGESIZE;
|
||||||
|
redraw = 1;
|
||||||
|
move_selection = 0;
|
||||||
|
}
|
||||||
} // End of down
|
} // End of down
|
||||||
if ( (p & PAD_BUTTON_UP) || (wp & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP)) || (a > PADCAL) || (mag>JOY_THRESHOLD && (ang>300 || ang<50)) )
|
if ( ((p | ph) & PAD_BUTTON_UP) || ((wp | wh) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP)) || (a > PADCAL) || (mag>JOY_THRESHOLD && (ang>300 || ang<50)) )
|
||||||
{
|
{
|
||||||
selection--;
|
if ( (p & PAD_BUTTON_UP) || (wp & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP)) ) { /*** Button just pressed***/
|
||||||
if (selection < 0)
|
scroll_delay = SCROLL_INITIAL_DELAY; // reset scroll delay.
|
||||||
{
|
move_selection = 1; //continue (move selection)
|
||||||
selection = maxfiles - 1;
|
}
|
||||||
offset = selection - PAGESIZE + 1;
|
else if (scroll_delay == 0) { /*** Button is held ***/
|
||||||
}
|
scroll_delay = SCROLL_LOOP_DELAY;
|
||||||
if (selection < offset)
|
move_selection = 1; //continue (move selection)
|
||||||
offset -= PAGESIZE;
|
} else {
|
||||||
if (offset < 0)
|
scroll_delay--; // wait
|
||||||
offset = 0;
|
}
|
||||||
redraw = 1;
|
|
||||||
|
if (move_selection)
|
||||||
|
{
|
||||||
|
selection--;
|
||||||
|
if (selection < 0) {
|
||||||
|
selection = maxfiles - 1;
|
||||||
|
offset = selection - PAGESIZE + 1;
|
||||||
|
}
|
||||||
|
if (selection < offset)
|
||||||
|
offset -= PAGESIZE;
|
||||||
|
if (offset < 0)
|
||||||
|
offset = 0;
|
||||||
|
redraw = 1;
|
||||||
|
move_selection = 0;
|
||||||
|
}
|
||||||
} // End of Up
|
} // End of Up
|
||||||
if ( (p & PAD_BUTTON_LEFT) || (wp & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT)) )
|
if ( (p & PAD_BUTTON_LEFT) || (wp & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT)) )
|
||||||
{
|
{
|
||||||
@ -400,7 +441,7 @@ OpenSMB ()
|
|||||||
* Function to load from an SD Card
|
* Function to load from an SD Card
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
OpenSD (int slot)
|
OpenSD ()
|
||||||
{
|
{
|
||||||
char msg[80];
|
char msg[80];
|
||||||
char buf[50] = "";
|
char buf[50] = "";
|
||||||
@ -412,8 +453,8 @@ OpenSD (int slot)
|
|||||||
/* don't mess with DVD entries */
|
/* don't mess with DVD entries */
|
||||||
havedir = 0; // gamecube only
|
havedir = 0; // gamecube only
|
||||||
|
|
||||||
/* get current SDCARD directory */
|
/* change current dir to snes roms directory */
|
||||||
sprintf ( currSDdir, getcwd(buf,50) ); // FIX: necessary?
|
sprintf ( currSDdir, "%s/%s", ROOTSDDIR, SNESROMDIR );
|
||||||
|
|
||||||
|
|
||||||
/* Parse initial root directory and get entries list */
|
/* Parse initial root directory and get entries list */
|
||||||
@ -425,7 +466,7 @@ OpenSD (int slot)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* no entries found */
|
/* no entries found */
|
||||||
sprintf (msg, "SNESROMS not found on SDCARD"); // FIX: update error msg
|
sprintf (msg, "No Files Found!");
|
||||||
WaitPrompt (msg);
|
WaitPrompt (msg);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -492,7 +533,7 @@ LoadDVDFile (unsigned char *buffer)
|
|||||||
else
|
else
|
||||||
|
|
||||||
{
|
{
|
||||||
return UnZipBuffer (buffer, discoffset, rootdirlength);
|
return UnZipBuffer (buffer, discoffset, 1, NULL); // unzip from dvd
|
||||||
}
|
}
|
||||||
return rootdirlength;
|
return rootdirlength;
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,13 @@
|
|||||||
|
|
||||||
int OpenDVD ();
|
int OpenDVD ();
|
||||||
int OpenSMB ();
|
int OpenSMB ();
|
||||||
int OpenSD (int slot);
|
int OpenSD ();
|
||||||
|
|
||||||
#define LOAD_DVD 1
|
#define LOAD_DVD 1
|
||||||
#define LOAD_SMB 2
|
#define LOAD_SMB 2
|
||||||
#define LOAD_SDC 4
|
#define LOAD_SDC 4
|
||||||
#define SNESROMDIR "SNESROMS"
|
#define ROOTSDDIR "fat:/"
|
||||||
#define SNESSAVEDIR "SNESSAVE"
|
#define SNESROMDIR "snes9x/roms"
|
||||||
|
#define SNESSAVEDIR "snes9x/saves"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -29,12 +29,13 @@
|
|||||||
#include "video.h"
|
#include "video.h"
|
||||||
#include "ftfont.h"
|
#include "ftfont.h"
|
||||||
#include "dkpro.h"
|
#include "dkpro.h"
|
||||||
#include "tempgfx.h"
|
|
||||||
#include "snes9xGX.h"
|
#include "snes9xGX.h"
|
||||||
|
|
||||||
#include "aram.h"
|
#include "aram.h"
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
|
||||||
|
#include "gfx_bg.h"
|
||||||
|
|
||||||
/*** Globals ***/
|
/*** Globals ***/
|
||||||
FT_Library ftlibrary;
|
FT_Library ftlibrary;
|
||||||
FT_Face face;
|
FT_Face face;
|
||||||
@ -228,7 +229,7 @@ licence ()
|
|||||||
else
|
else
|
||||||
ypos += 24;
|
ypos += 24;
|
||||||
|
|
||||||
setfontsize (16); // FIX
|
setfontsize (16);
|
||||||
setfontcolour (0x00, 0x00, 0x00);
|
setfontcolour (0x00, 0x00, 0x00);
|
||||||
|
|
||||||
DrawText (-1, ypos += 40, (char*)"Snes9x - Copyright (c) Snes9x Team 1996 - 2006");
|
DrawText (-1, ypos += 40, (char*)"Snes9x - Copyright (c) Snes9x Team 1996 - 2006");
|
||||||
@ -237,7 +238,7 @@ licence ()
|
|||||||
DrawText (-1, ypos += 20, (char*)"redistribute it under the conditions of the");
|
DrawText (-1, ypos += 20, (char*)"redistribute it under the conditions of the");
|
||||||
DrawText (-1, ypos += 20, (char*)"GNU GENERAL PUBLIC LICENSE Version 2");
|
DrawText (-1, ypos += 20, (char*)"GNU GENERAL PUBLIC LICENSE Version 2");
|
||||||
DrawText (-1, ypos +=
|
DrawText (-1, ypos +=
|
||||||
20, (char*)"Additionally, the developers of this port disclaims");
|
20, (char*)"Additionally, the developers of this port disclaim");
|
||||||
DrawText (-1, ypos +=
|
DrawText (-1, ypos +=
|
||||||
20, (char*)"all copyright interests in the Nintendo GameCube");
|
20, (char*)"all copyright interests in the Nintendo GameCube");
|
||||||
DrawText (-1, ypos +=
|
DrawText (-1, ypos +=
|
||||||
@ -281,7 +282,7 @@ showdklogo ()
|
|||||||
int w, h, p, dispoffset;
|
int w, h, p, dispoffset;
|
||||||
p = 0;
|
p = 0;
|
||||||
dispoffset =
|
dispoffset =
|
||||||
((screenheight != 480 ? 360 : 350) * 320) + ((640 - dkpro_WIDTH) >> 2);
|
((screenheight != 480 ? 365 : 355) * 320) + ((640 - dkpro_WIDTH) >> 2);
|
||||||
|
|
||||||
dkunpack ();
|
dkunpack ();
|
||||||
|
|
||||||
@ -354,11 +355,11 @@ unpackbackdrop ()
|
|||||||
|
|
||||||
/*** If it's PAL50, need to move down a few lines ***/
|
/*** If it's PAL50, need to move down a few lines ***/
|
||||||
offset = ((screenheight - 480) >> 1) * 320;
|
offset = ((screenheight - 480) >> 1) * 320;
|
||||||
inbytes = tempgfx_COMPRESSED;
|
inbytes = BG_COMPRESSED;
|
||||||
outbytes = tempgfx_RAW;
|
outbytes = BG_RAW;
|
||||||
|
|
||||||
res =
|
res =
|
||||||
uncompress ((Bytef *) backdrop + offset, &outbytes, (Bytef *) tempgfx,
|
uncompress ((Bytef *) backdrop + offset, &outbytes, (Bytef *) bg,
|
||||||
inbytes);
|
inbytes);
|
||||||
|
|
||||||
#ifndef HW_RVL
|
#ifndef HW_RVL
|
||||||
@ -390,11 +391,11 @@ void
|
|||||||
WaitButtonA ()
|
WaitButtonA ()
|
||||||
{
|
{
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
while ( (PAD_ButtonsDown (0) & PAD_BUTTON_A) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) );
|
while ( (PAD_ButtonsDown (0) & PAD_BUTTON_A) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) ) VIDEO_WaitVSync();
|
||||||
while (!(PAD_ButtonsDown (0) & PAD_BUTTON_A) && !(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) );
|
while (!(PAD_ButtonsDown (0) & PAD_BUTTON_A) && !(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) ) VIDEO_WaitVSync();
|
||||||
#else
|
#else
|
||||||
while ( PAD_ButtonsDown (0) & PAD_BUTTON_A );
|
while ( PAD_ButtonsDown (0) & PAD_BUTTON_A ) VIDEO_WaitVSync();
|
||||||
while (!(PAD_ButtonsDown (0) & PAD_BUTTON_A) );
|
while (!(PAD_ButtonsDown (0) & PAD_BUTTON_A) ) VIDEO_WaitVSync();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,7 +411,7 @@ WaitButtonAB ()
|
|||||||
|
|
||||||
while ( (PAD_ButtonsDown (0) & (PAD_BUTTON_A | PAD_BUTTON_B))
|
while ( (PAD_ButtonsDown (0) & (PAD_BUTTON_A | PAD_BUTTON_B))
|
||||||
|| (WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_A | WPAD_CLASSIC_BUTTON_B))
|
|| (WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_A | WPAD_CLASSIC_BUTTON_B))
|
||||||
);
|
) VIDEO_WaitVSync();
|
||||||
|
|
||||||
while ( TRUE )
|
while ( TRUE )
|
||||||
{
|
{
|
||||||
@ -424,7 +425,7 @@ WaitButtonAB ()
|
|||||||
#else
|
#else
|
||||||
u32 gc_btns;
|
u32 gc_btns;
|
||||||
|
|
||||||
while ( (PAD_ButtonsDown (0) & (PAD_BUTTON_A | PAD_BUTTON_B)) );
|
while ( (PAD_ButtonsDown (0) & (PAD_BUTTON_A | PAD_BUTTON_B)) ) VIDEO_WaitVSync();
|
||||||
|
|
||||||
while ( TRUE )
|
while ( TRUE )
|
||||||
{
|
{
|
||||||
@ -504,7 +505,7 @@ ShowAction (char *msg)
|
|||||||
* Generic Menu Routines
|
* Generic Menu Routines
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void
|
void
|
||||||
DrawMenu (char items[][20], char *title, int maxitems, int selected)
|
DrawMenu (char items[][20], char *title, int maxitems, int selected, int fontsize)
|
||||||
{
|
{
|
||||||
int i, w;
|
int i, w;
|
||||||
int ypos;
|
int ypos;
|
||||||
@ -516,7 +517,8 @@ DrawMenu (char items[][20], char *title, int maxitems, int selected)
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ypos = (screenheight - (maxitems * 32)) >> 1;
|
//ypos = (screenheight - (maxitems * 32)) >> 1; previous
|
||||||
|
ypos = (screenheight - (maxitems * (fontsize + 8))) >> 1;
|
||||||
|
|
||||||
if (screenheight == 480)
|
if (screenheight == 480)
|
||||||
ypos += 52;
|
ypos += 52;
|
||||||
@ -525,30 +527,36 @@ DrawMenu (char items[][20], char *title, int maxitems, int selected)
|
|||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
|
|
||||||
#if 0
|
//#if 0
|
||||||
DrawPolygon (4, bounding, 0x00, 0x00, 0xc0);
|
// DrawPolygon (4, bounding, 0x00, 0x00, 0xc0);
|
||||||
DrawPolygon (4, base, 0x00, 0x00, 0xc0);
|
// DrawPolygon (4, base, 0x00, 0x00, 0xc0);
|
||||||
setfontsize (32);
|
setfontsize (30);
|
||||||
DrawText (-1, 80, title);
|
if (title != NULL)
|
||||||
DrawText (-1, screenheight - 50, "Snes9x - GX 2.0");
|
DrawText (-1, 60, title);
|
||||||
#endif
|
setfontsize (12);
|
||||||
|
DrawText (510, screenheight - 20, "Snes9x GX 003");
|
||||||
|
//#endif
|
||||||
|
|
||||||
setfontsize (24);
|
setfontsize (fontsize); // set font size
|
||||||
setfontcolour (0, 0, 0);
|
setfontcolour (0, 0, 0);
|
||||||
|
|
||||||
for (i = 0; i < maxitems; i++)
|
for (i = 0; i < maxitems; i++)
|
||||||
{
|
{
|
||||||
if (i == selected)
|
if (i == selected)
|
||||||
{
|
{
|
||||||
for( w = 0; w < 32; w++ )
|
//for( w = 0; w < 32; w++ )
|
||||||
DrawLineFast( 30, 610, (i << 5) + (ypos-26) + w, 0x80, 0x80, 0x80 );
|
for( w = 0; w < (fontsize + 8); w++ )
|
||||||
|
//DrawLineFast( 30, 610, (i << 5) + (ypos-26) + w, 0x80, 0x80, 0x80 ); previous
|
||||||
|
DrawLineFast( 30, 610, i * (fontsize + 8) + (ypos-(fontsize + 2)) + w, 0x80, 0x80, 0x80 );
|
||||||
|
|
||||||
setfontcolour (0xff, 0xff, 0xff);
|
setfontcolour (0xff, 0xff, 0xff);
|
||||||
DrawText (-1, (i << 5) + ypos, items[i]);
|
//DrawText (-1, (i << 5) + ypos, items[i]); previous
|
||||||
|
DrawText (-1, i * (fontsize + 8) + ypos, items[i]);
|
||||||
setfontcolour (0x00, 0x00, 0x00);
|
setfontcolour (0x00, 0x00, 0x00);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
DrawText (-1, i * 32 + ypos, items[i]);
|
DrawText (-1, i * (fontsize + 8) + ypos, items[i]);
|
||||||
|
//DrawText (-1, i * 32 + ypos, items[i]); previous
|
||||||
}
|
}
|
||||||
|
|
||||||
showscreen ();
|
showscreen ();
|
||||||
@ -563,7 +571,7 @@ DrawMenu (char items[][20], char *title, int maxitems, int selected)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
int menu = 0;
|
int menu = 0;
|
||||||
int
|
int
|
||||||
RunMenu (char items[][20], int maxitems, char *title)
|
RunMenu (char items[][20], int maxitems, char *title, int fontsize)
|
||||||
{
|
{
|
||||||
int redraw = 1;
|
int redraw = 1;
|
||||||
int quit = 0;
|
int quit = 0;
|
||||||
@ -578,7 +586,7 @@ RunMenu (char items[][20], int maxitems, char *title)
|
|||||||
{
|
{
|
||||||
if (redraw)
|
if (redraw)
|
||||||
{
|
{
|
||||||
DrawMenu (&items[0], title, maxitems, menu);
|
DrawMenu (&items[0], title, maxitems, menu, fontsize);
|
||||||
redraw = 0;
|
redraw = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@ void legal ();
|
|||||||
void highlight (int on);
|
void highlight (int on);
|
||||||
void WaitButtonA ();
|
void WaitButtonA ();
|
||||||
void setfontcolour (u8 r, u8 g, u8 b);
|
void setfontcolour (u8 r, u8 g, u8 b);
|
||||||
int RunMenu (char items[][20], int maxitems, char *title);
|
int RunMenu (char items[][20], int maxitems, char *title, int fontsize = 24);
|
||||||
|
void DrawMenu (char items[][20], char *title, int maxitems, int selected, int fontsize = 24);
|
||||||
void WaitPrompt (char *msg);
|
void WaitPrompt (char *msg);
|
||||||
int WaitPromptChoice (char *msg, char* bmsg, char* amsg);
|
int WaitPromptChoice (char *msg, char* bmsg, char* amsg);
|
||||||
void ShowAction (char *msg);
|
void ShowAction (char *msg);
|
||||||
|
691
source/ngc/gfx_bg.h
Normal file
691
source/ngc/gfx_bg.h
Normal file
@ -0,0 +1,691 @@
|
|||||||
|
/*
|
||||||
|
* File : bg3.bmp
|
||||||
|
* Width : 640
|
||||||
|
* Height: 480
|
||||||
|
*/
|
||||||
|
#define BG_WIDTH (640)
|
||||||
|
#define BG_HEIGHT (480)
|
||||||
|
#define BG_RAW (614400)
|
||||||
|
#define BG_COMPRESSED (8789)
|
||||||
|
|
||||||
|
static unsigned char bg[]=
|
||||||
|
{
|
||||||
|
0x78,0x9c,0xed,0xdd,0x77,0xb0,0x94,0xf5,0xbd,0xf8,0x71,0x9d,0x4c,
|
||||||
|
0x26,0xe3,0x24,0x93,0xdc,0xeb,0xe4,0xc6,0x4b,0x20,0x89,0xf1,0xc6,
|
||||||
|
0x68,0x8c,0x28,0x18,0x31,0x51,0x2c,0x80,0xb1,0x05,0x84,0x83,0x68,
|
||||||
|
0xec,0x25,0x41,0x63,0x41,0x11,0xa4,0x6d,0x7b,0xbe,0xbb,0xdf,0xe7,
|
||||||
|
0xd9,0x3d,0x20,0x96,0x44,0xa3,0x46,0x13,0x1b,0x8a,0xd8,0x00,0xa5,
|
||||||
|
0x8a,0x8a,0x0a,0xa8,0x80,0x02,0x8a,0x8a,0x35,0xc4,0x82,0x68,0x40,
|
||||||
|
0x40,0x4a,0x72,0x6b,0xca,0xef,0xf7,0x9c,0x43,0x09,0xe6,0xf7,0xbb,
|
||||||
|
0xf7,0x9a,0x4a,0xf1,0xf5,0x9e,0x79,0xcd,0x39,0xbb,0xec,0xd9,0xf6,
|
||||||
|
0xc7,0x67,0xbe,0xdf,0xdd,0x67,0x97,0x5f,0x37,0x7e,0x5d,0xf8,0x35,
|
||||||
|
0x00,0x00,0x1f,0x1d,0xcd,0xbf,0x2e,0x02,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x6c,0x67,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,0xfb,0x7e,
|
||||||
|
0xd5,0xf8,0xd5,0x16,0xb3,0xae,0xb1,0xaa,0xf0,0xcb,0xc6,0x92,0xe2,
|
||||||
|
0x92,0xc6,0xdb,0xc5,0xe5,0x8d,0xf7,0xb7,0xe8,0x7d,0x01,0xf8,0x7b,
|
||||||
|
0x59,0xd5,0x78,0xb3,0x38,0xbf,0x3e,0xb9,0x74,0x63,0x76,0x45,0x79,
|
||||||
|
0x64,0x76,0x75,0x79,0x74,0x36,0xbd,0xf4,0x52,0x7d,0x79,0x71,0xdd,
|
||||||
|
0x56,0x70,0xdf,0x00,0xfe,0x56,0xd6,0x35,0x96,0x16,0x66,0x65,0xd7,
|
||||||
|
0x96,0x2e,0x8a,0xbd,0x92,0x43,0x7e,0xdc,0xb1,0xdc,0xfe,0xa7,0xfb,
|
||||||
|
0x94,0x0e,0xac,0x9f,0x98,0xa4,0xd9,0xfd,0xe5,0x9f,0x37,0x56,0x6f,
|
||||||
|
0xf1,0xfb,0x07,0xf0,0xb7,0xf2,0x76,0x7d,0x72,0x71,0x50,0x76,0x68,
|
||||||
|
0xe5,0xa0,0x49,0x9d,0x86,0xb6,0x5f,0xb5,0x67,0xff,0xdd,0x7f,0xb5,
|
||||||
|
0xdb,0x85,0x5f,0x9c,0xf7,0xf9,0x41,0x7b,0x36,0x4e,0x4e,0x6e,0xcc,
|
||||||
|
0x16,0x95,0x56,0x6f,0x05,0xf7,0x11,0xe0,0xaf,0xef,0xbd,0xc2,0xc3,
|
||||||
|
0xd9,0x45,0xe5,0x4e,0xb7,0x1d,0x59,0xec,0xf4,0xef,0x5f,0xba,0xb0,
|
||||||
|
0xdd,0x6f,0xdb,0xf5,0x6b,0xfb,0x5f,0xed,0xfa,0xb5,0xfb,0xfd,0x97,
|
||||||
|
0xfa,0xb5,0x79,0xa8,0xcd,0xd0,0x5e,0xe9,0xcd,0x95,0xd7,0x1b,0xeb,
|
||||||
|
0xb6,0x82,0xfb,0x09,0xf0,0xd7,0xb5,0xae,0xfe,0x62,0x71,0x44,0x7a,
|
||||||
|
0x50,0xe5,0xd8,0x57,0xdb,0x0f,0x68,0xf7,0x5f,0x6d,0xf3,0xd9,0xd7,
|
||||||
|
0xf6,0xc2,0xb6,0xff,0xb9,0xde,0x17,0xd6,0xb6,0xb9,0xa8,0xdd,0x88,
|
||||||
|
0x73,0x2a,0x8f,0xd4,0x57,0x15,0xb7,0xf4,0xfd,0x04,0xf8,0x6b,0x5b,
|
||||||
|
0x59,0x9f,0x56,0x3c,0xf9,0xaa,0xae,0xe5,0x83,0x7f,0xdd,0xf6,0xa2,
|
||||||
|
0xd6,0xb9,0xb7,0xd9,0xfc,0x6b,0xfb,0xdb,0x2f,0xf4,0xfb,0xec,0xe8,
|
||||||
|
0x83,0x8a,0x3f,0xab,0x2f,0x29,0x6d,0xe9,0xfb,0x09,0xf0,0xd7,0xb6,
|
||||||
|
0xb4,0x7e,0x63,0xe9,0xb0,0x3b,0xba,0x17,0xbf,0xf4,0x9b,0x0d,0x6b,
|
||||||
|
0xbf,0xcd,0xe7,0x5f,0xbe,0x0f,0xfe,0xfc,0x63,0xbb,0x0e,0x2e,0x64,
|
||||||
|
0xcf,0x95,0xd7,0x5f,0x7e,0x5d,0x61,0x4d,0xe3,0xfd,0xc2,0x8a,0xc6,
|
||||||
|
0x8a,0xe2,0xaa,0xc6,0x9a,0x82,0xf7,0x86,0x81,0x6d,0xd9,0x1b,0xf5,
|
||||||
|
0x91,0xa5,0x83,0xa7,0x76,0x1b,0xda,0xee,0x37,0x1f,0xdc,0xfb,0x6e,
|
||||||
|
0xda,0x03,0x3f,0xff,0x4f,0x03,0x4f,0xcb,0x66,0x95,0xd7,0x34,0x56,
|
||||||
|
0x16,0x16,0xd7,0xe7,0x17,0x1f,0xab,0x4f,0x28,0xdd,0x99,0x8d,0x2e,
|
||||||
|
0x8f,0xab,0xcf,0x28,0xbd,0x50,0x7f,0xa7,0xb8,0x66,0x2b,0x78,0x0c,
|
||||||
|
0x00,0x7f,0x9a,0xf5,0xef,0x69,0x2c,0xce,0x1a,0xa5,0x6f,0x4d,0xef,
|
||||||
|
0x3c,0xa4,0xdd,0xef,0xbf,0xd0,0xaf,0xdd,0xef,0xdb,0xf5,0x6b,0x7d,
|
||||||
|
0x0d,0x70,0xb3,0xf9,0xd7,0xee,0xd5,0x9d,0x07,0x34,0x65,0x93,0xcb,
|
||||||
|
0xaf,0xd4,0x1f,0x28,0x8e,0x4c,0x7f,0x50,0x39,0xbe,0x76,0x54,0xe8,
|
||||||
|
0x56,0x39,0x74,0x44,0xd7,0xda,0x89,0xb5,0x52,0x3a,0xa6,0xfc,0x8c,
|
||||||
|
0x63,0x04,0x81,0x6d,0xce,0xba,0xd6,0xfd,0xeb,0xeb,0x59,0x5a,0x6a,
|
||||||
|
0xff,0xe8,0xc1,0x43,0x3e,0xff,0xde,0x3f,0xf5,0xff,0xec,0x6b,0xff,
|
||||||
|
0x3c,0xb0,0xdd,0xbf,0x7f,0xf1,0x03,0xeb,0xbf,0x76,0x2f,0xfe,0xe3,
|
||||||
|
0xc0,0xde,0xe9,0xa8,0xca,0x0d,0xe9,0x19,0x95,0x43,0x0a,0x3d,0xae,
|
||||||
|
0xed,0xdd,0xb7,0xcf,0xb3,0x27,0x9c,0xd2,0x67,0xd9,0x31,0x7d,0x0f,
|
||||||
|
0x7a,0x76,0x9f,0xa4,0xfb,0xa5,0x69,0xf6,0x48,0xf9,0xdd,0x2d,0xfe,
|
||||||
|
0x58,0x00,0xfe,0x14,0xeb,0xd7,0x7f,0x6f,0xd6,0x2f,0x2d,0xb5,0x1f,
|
||||||
|
0xf5,0xc5,0x62,0x9b,0x1f,0x75,0xac,0x1c,0x5e,0xef,0x9c,0xec,0x7e,
|
||||||
|
0xff,0x17,0x86,0xed,0xf6,0x9f,0xed,0xfa,0x6d,0x7a,0xfd,0x6f,0xf6,
|
||||||
|
0x3f,0x0d,0x3e,0x31,0x2d,0x57,0x7a,0x25,0x47,0x8d,0x38,0xef,0xb4,
|
||||||
|
0xd3,0x96,0xf4,0x3a,0xbe,0xc7,0xef,0x7b,0x1c,0xdf,0xe3,0xff,0xf4,
|
||||||
|
0xec,0xd3,0xf4,0xbb,0x9e,0xdf,0xef,0xb0,0xa8,0x53,0x1c,0x16,0x1e,
|
||||||
|
0xad,0x2f,0xf3,0xfe,0x30,0xf0,0x97,0x6b,0xfe,0x7b,0xc9,0xd7,0x7f,
|
||||||
|
0xf9,0xcf,0x5f,0x36,0xee,0x2b,0xf6,0x4b,0x7b,0x55,0xce,0xcf,0xae,
|
||||||
|
0x2f,0x4f,0xa8,0xdf,0x56,0x1e,0x96,0x1e,0x96,0xec,0xfe,0xc2,0x57,
|
||||||
|
0x07,0x6e,0x7c,0xff,0x77,0xe7,0x7b,0xf6,0x2c,0x9c,0x92,0x76,0x4f,
|
||||||
|
0xbe,0x73,0x41,0xff,0x87,0x7b,0x9e,0xf0,0x9d,0xdf,0x75,0x3f,0xbe,
|
||||||
|
0xc7,0x6f,0x7a,0xac,0xf7,0xdb,0x96,0x19,0xd8,0x71,0xf0,0xfe,0xb7,
|
||||||
|
0xa6,0xf5,0x05,0xa5,0x35,0x7f,0xb7,0xfb,0x0d,0xf0,0x97,0x59,0xd7,
|
||||||
|
0xbc,0x76,0xfd,0xcf,0xc6,0x5b,0x85,0xa7,0xea,0xd3,0x4b,0x73,0xeb,
|
||||||
|
0x4b,0x8a,0xab,0x9b,0xdf,0x2d,0xcc,0xc9,0x46,0x96,0x0e,0x19,0xdd,
|
||||||
|
0xa1,0xf8,0xe5,0xdf,0xb4,0xed,0xf7,0x85,0x7f,0xfb,0xe7,0x0b,0xff,
|
||||||
|
0xe9,0xb2,0xa3,0x2b,0x27,0x54,0x3b,0xc7,0x81,0xa7,0xf6,0x78,0x2f,
|
||||||
|
0x9f,0x7d,0xbf,0xdd,0x38,0xfb,0x5a,0x7f,0xf6,0xe9,0xf9,0xbb,0x5e,
|
||||||
|
0xdf,0xdf,0xfd,0xf9,0xa6,0x6c,0x7c,0x79,0xf9,0x56,0xf0,0x98,0x00,
|
||||||
|
0x3e,0x8c,0x96,0xb5,0xdf,0xda,0xe6,0x55,0x85,0x65,0x8d,0xa5,0x85,
|
||||||
|
0x25,0x8d,0x25,0xb9,0x77,0x0a,0xcb,0x9a,0x57,0x17,0xde,0x6b,0xcc,
|
||||||
|
0x2a,0x5e,0xf4,0xc3,0x6f,0x94,0x3b,0xfe,0xe7,0x17,0x2e,0xdc,0x65,
|
||||||
|
0xd6,0xce,0x83,0xbb,0xa5,0xe7,0x57,0x8e,0x28,0x9e,0x7c,0xed,0x29,
|
||||||
|
0xdf,0xed,0xfe,0x9f,0x1f,0x98,0x7d,0xeb,0x7f,0xfe,0xb6,0xe7,0xc9,
|
||||||
|
0x9d,0x57,0x75,0x88,0xd7,0x84,0xb7,0xfe,0xae,0x6b,0x57,0x80,0x3f,
|
||||||
|
0xd7,0xba,0xc2,0x3b,0x8d,0x17,0x8a,0xd3,0xeb,0x63,0x4a,0xd7,0x65,
|
||||||
|
0x8d,0x72,0x35,0x0b,0x95,0x90,0x35,0x2a,0xd7,0x66,0x77,0x95,0x1f,
|
||||||
|
0xad,0xcf,0x28,0xd5,0x47,0x7c,0xb3,0xb2,0xef,0xb3,0xff,0x78,0xc9,
|
||||||
|
0x17,0x46,0x74,0x4f,0xea,0x59,0xbd,0x72,0xf0,0x25,0x7d,0xc7,0x1c,
|
||||||
|
0x7b,0xfc,0xb1,0xbf,0xeb,0xf1,0x87,0xbd,0xef,0x26,0x3d,0x4f,0x38,
|
||||||
|
0xea,0x3f,0x76,0xaf,0x16,0x1b,0x2f,0x36,0xd6,0x6e,0x05,0x8f,0x0b,
|
||||||
|
0xe0,0x7f,0xf6,0x7e,0xe3,0xe9,0xe2,0x2d,0xd9,0xe0,0x72,0xaf,0xd8,
|
||||||
|
0x29,0xf9,0x56,0xd2,0xa9,0xb8,0x4f,0xb9,0x7d,0xae,0x63,0xe1,0x1b,
|
||||||
|
0xd5,0xfd,0x2b,0xbd,0xd2,0xfe,0x95,0xf3,0xeb,0x5d,0x2a,0x7b,0x0c,
|
||||||
|
0x3f,0x28,0x39,0x3f,0xbb,0xb5,0xfc,0x58,0xcb,0x7e,0xf8,0xa2,0x73,
|
||||||
|
0x26,0xe7,0x7b,0xdd,0xdf,0xf7,0xcc,0xf7,0xbb,0x3d,0xfb,0xac,0x5f,
|
||||||
|
0xf7,0xf5,0x38,0xfe,0xd8,0xd6,0x75,0x60,0x7e,0xfa,0x37,0x5f,0xa9,
|
||||||
|
0x5c,0x70,0xf9,0xb3,0x2d,0xdf,0x13,0xb3,0x15,0x3c,0x36,0x80,0xff,
|
||||||
|
0xde,0x7b,0x85,0x19,0x59,0xb1,0x7c,0x70,0xe8,0x5c,0x3e,0xb9,0xdf,
|
||||||
|
0x0f,0xfa,0x9e,0x77,0x66,0xdf,0x13,0x4e,0x3f,0xe3,0xf4,0x3e,0xa7,
|
||||||
|
0x9f,0x7e,0x6a,0x9f,0x93,0xfb,0xf6,0x3c,0xf9,0xc0,0x21,0x5f,0x1d,
|
||||||
|
0xd8,0x31,0xf6,0x4a,0x06,0x67,0x37,0x96,0x67,0xd6,0xdf,0x2a,0xbe,
|
||||||
|
0x56,0x4f,0x4b,0xdf,0xe8,0xdf,0xe3,0xbe,0x7d,0xcf,0x6b,0x3f,0xb3,
|
||||||
|
0xfd,0xb9,0x07,0x3c,0x71,0xcc,0x09,0xbd,0xfe,0xed,0x03,0xf3,0xef,
|
||||||
|
0xf8,0xee,0xbf,0xf9,0x72,0x3e,0xff,0x9e,0x69,0xf9,0xbe,0xd4,0x2d,
|
||||||
|
0xfe,0xd8,0x00,0xfe,0x07,0x8d,0x79,0xc5,0x62,0xba,0x5f,0x72,0xda,
|
||||||
|
0xf9,0x85,0xef,0x9d,0x72,0xca,0x51,0xbd,0xba,0x9e,0x7a,0x58,0xef,
|
||||||
|
0x2e,0xa7,0x76,0x69,0xd5,0xed,0x94,0xa3,0x7b,0xf5,0x3e,0xbd,0xa9,
|
||||||
|
0xf7,0x1e,0xa5,0xbd,0x87,0x96,0xea,0xf3,0x4b,0xab,0x9b,0x5b,0xbe,
|
||||||
|
0x1b,0xeb,0xa6,0x62,0x53,0x75,0xff,0xec,0x98,0xf4,0x8c,0xe4,0x94,
|
||||||
|
0xd8,0x2d,0x69,0x7f,0xd1,0xa1,0x93,0x7a,0x6f,0x7a,0x0d,0xf0,0xd8,
|
||||||
|
0xdf,0xf4,0xfc,0xee,0xb7,0xff,0x6d,0xb7,0xea,0x90,0xfa,0x0b,0xf6,
|
||||||
|
0xbf,0xc0,0xd6,0xae,0x31,0xbe,0xd8,0xad,0x78,0xcc,0xe0,0xc2,0x69,
|
||||||
|
0x87,0xf6,0x39,0xec,0xb4,0xae,0xbd,0xbb,0x9d,0xd6,0xad,0xe9,0x0f,
|
||||||
|
0xba,0x36,0x75,0x39,0xf5,0xdb,0x4d,0xc7,0xf4,0x6b,0x73,0xf6,0xe9,
|
||||||
|
0xd9,0xd3,0xe5,0x96,0xcb,0xbf,0xdf,0x58,0x58,0x18,0x97,0xdd,0x5a,
|
||||||
|
0x9a,0x50,0x9f,0x5b,0x7a,0xb2,0x3e,0xba,0x34,0x30,0x76,0xaa,0x7e,
|
||||||
|
0xfb,0xf4,0xa6,0xb7,0xd7,0xbf,0x17,0x9c,0xcf,0xbf,0xd3,0xda,0x2f,
|
||||||
|
0x39,0x20,0xbd,0x26,0x79,0xc3,0xfb,0x1f,0xc0,0xd6,0xae,0x71,0x6f,
|
||||||
|
0xf1,0xe0,0xc2,0x01,0x83,0x4f,0x38,0xa5,0x6b,0xaf,0x0f,0xce,0xbe,
|
||||||
|
0x6e,0x4d,0x5d,0x5b,0x7e,0x9e,0x7a,0x44,0xaf,0xae,0xfd,0x3e,0x77,
|
||||||
|
0xf6,0x29,0xd9,0x53,0xe5,0x96,0xf7,0x49,0xd6,0x36,0xbf,0x5f,0x58,
|
||||||
|
0xd6,0xfc,0x6e,0xf1,0xbd,0x96,0xe3,0x05,0x1b,0x4b,0x0b,0x0f,0x67,
|
||||||
|
0x03,0xcb,0x1d,0xfb,0x7d,0xf7,0xc1,0xd6,0xfd,0x6f,0x9f,0x9e,0xbf,
|
||||||
|
0xeb,0x76,0xc1,0x17,0x1f,0x39,0x23,0x7b,0xb0,0xbc,0x62,0x4b,0x3f,
|
||||||
|
0x2e,0x80,0xff,0x4d,0x63,0x66,0xf1,0xa2,0xb8,0x47,0xb2,0xf7,0x39,
|
||||||
|
0x47,0x9d,0x76,0xf4,0x29,0x47,0x1c,0x7b,0xf8,0xa9,0x87,0xf7,0x3a,
|
||||||
|
0xfc,0xb4,0xf5,0xbe,0x7d,0xea,0x91,0x3d,0x8f,0x3c,0xfd,0xd0,0xde,
|
||||||
|
0x6d,0x4b,0x7b,0x0e,0xbb,0x38,0x9b,0x50,0x7e,0xac,0x7e,0x5f,0xe9,
|
||||||
|
0xee,0xfa,0xdd,0xe5,0x7b,0xea,0xe3,0x4a,0x0f,0xd4,0xe7,0x94,0x5e,
|
||||||
|
0x6a,0xbc,0x53,0x7c,0x23,0x5f,0x03,0x1e,0x39,0xa8,0x69,0x54,0xd3,
|
||||||
|
0xf1,0xc7,0xfe,0xae,0xe7,0x89,0x5d,0x7f,0xf5,0xc5,0xca,0x51,0x97,
|
||||||
|
0x5f,0x57,0x7f,0xad,0xb4,0x6e,0x4b,0x3f,0x2e,0x80,0xff,0xd5,0xb2,
|
||||||
|
0xc2,0xc4,0xac,0x5f,0xb9,0x43,0xd2,0xae,0xb4,0xc7,0xf9,0x07,0x7c,
|
||||||
|
0xef,0xb0,0x33,0x0e,0xef,0x73,0xf8,0xe9,0x87,0xf7,0x3e,0xfc,0xf4,
|
||||||
|
0xae,0xbd,0x3b,0xf7,0xdd,0xef,0x94,0x2f,0x0f,0xd9,0xe5,0x92,0xaf,
|
||||||
|
0xc5,0x1e,0xc9,0x19,0xe9,0xc9,0x49,0xf7,0xf4,0x90,0xa4,0x63,0xba,
|
||||||
|
0x6f,0xe8,0x90,0x1e,0x10,0x8e,0x48,0xfb,0x24,0xfd,0xb3,0x6b,0xca,
|
||||||
|
0x53,0xeb,0x77,0x96,0x9a,0x86,0x35,0xdd,0x70,0xc2,0x89,0x47,0xfe,
|
||||||
|
0xeb,0xbe,0x17,0xef,0x36,0xbe,0x47,0x7a,0x65,0x65,0x7e,0x63,0x55,
|
||||||
|
0x71,0xcb,0x3f,0x2e,0x80,0xff,0xdd,0xdb,0xf5,0x47,0x8a,0x3f,0x4c,
|
||||||
|
0xcf,0xac,0x74,0xae,0x7d,0x35,0x7c,0xb9,0xf4,0xf9,0x61,0xbb,0x0c,
|
||||||
|
0xfd,0xdc,0x25,0xbb,0x14,0xda,0x0c,0xde,0x35,0x7c,0xb5,0x72,0x60,
|
||||||
|
0x3c,0x3c,0x74,0x89,0xfb,0x25,0x87,0x0d,0xbd,0x30,0xfe,0xf4,0xb4,
|
||||||
|
0xfb,0x1a,0x13,0xfb,0x4c,0x1c,0x3e,0xe9,0xb8,0xfb,0x87,0xdf,0x7e,
|
||||||
|
0x72,0xb9,0x71,0xec,0xb0,0x0e,0xb5,0x13,0xd2,0x8b,0x2a,0xdd,0x8a,
|
||||||
|
0xfb,0x5c,0xb5,0xe7,0xa0,0xaf,0xde,0x71,0x50,0x3c,0x2f,0xb9,0xa5,
|
||||||
|
0xfe,0x6c,0x69,0xe5,0x56,0xf0,0x98,0x00,0x3e,0x9c,0x55,0x85,0xd7,
|
||||||
|
0xeb,0x73,0x8b,0x63,0xb3,0x6b,0x4b,0x21,0x3d,0xa3,0x72,0x6c,0xda,
|
||||||
|
0x23,0x39,0x36,0x3d,0x33,0xa9,0x65,0x57,0x94,0x8b,0xe9,0x77,0x2a,
|
||||||
|
0x1d,0x07,0x5f,0x1f,0x97,0x1e,0xf6,0xfe,0xc8,0x95,0xed,0x57,0x5c,
|
||||||
|
0xb1,0x62,0xaf,0xf5,0x56,0xee,0xb3,0xf2,0xf2,0x95,0x07,0x4f,0x1b,
|
||||||
|
0x79,0x4c,0x3e,0x03,0xbf,0x9d,0x1e,0x11,0x7a,0xa7,0x83,0x2b,0x37,
|
||||||
|
0x67,0x33,0x4b,0xaf,0xff,0x05,0xc7,0xfd,0xcd,0xca,0xce,0x2a,0xef,
|
||||||
|
0x50,0xdb,0xa1,0xd6,0x35,0x1d,0x5d,0xd9,0xfc,0x74,0xdf,0xfa,0x3b,
|
||||||
|
0xe5,0x2d,0xff,0x1c,0x01,0x5b,0xbf,0x75,0xb9,0xb5,0x85,0xb5,0xcd,
|
||||||
|
0xeb,0x3f,0xd3,0xf6,0xa7,0xfc,0xdd,0xfb,0xcd,0xef,0x16,0x7e,0xde,
|
||||||
|
0x98,0x57,0x9c,0x5d,0x9f,0x53,0x9a,0x53,0x5f,0x50,0xfc,0x45,0xfd,
|
||||||
|
0x89,0x62,0xff,0xda,0xfe,0xc9,0xf4,0xee,0xef,0x8f,0x78,0x6f,0xf7,
|
||||||
|
0xe5,0x57,0x2e,0xdb,0x73,0xd9,0x95,0xef,0xed,0xb9,0xfc,0xca,0xe5,
|
||||||
|
0x7b,0x6e,0xf8,0xfd,0x6b,0x2b,0xae,0x78,0xbd,0xa9,0xeb,0xf0,0xc3,
|
||||||
|
0xd3,0xab,0x2b,0xb3,0xea,0x0b,0x8b,0x6f,0x34,0x56,0xe4,0xb7,0xbb,
|
||||||
|
0xee,0xcf,0xba,0xdf,0xef,0xd4,0xfb,0x96,0x3f,0x7e,0xff,0x3f,0x14,
|
||||||
|
0x5a,0xbe,0x67,0xe1,0xb3,0xf7,0xef,0x38,0xec,0xc9,0xfa,0xac,0xd2,
|
||||||
|
0xc6,0xd3,0x9f,0xba,0xa9,0xef,0x07,0xf6,0xd3,0x7d,0xe3,0x0e,0xc1,
|
||||||
|
0x4c,0x04,0xfe,0xd8,0xba,0xe6,0x35,0xad,0xef,0xd1,0xbe,0x9f,0xcf,
|
||||||
|
0xc0,0x35,0x1b,0xbe,0xd3,0xe5,0xcf,0xbe,0xbe,0xc6,0xec,0xe2,0x71,
|
||||||
|
0x43,0x4f,0xad,0xae,0xee,0xb0,0xfc,0xf2,0xe5,0xad,0x73,0x6f,0xd9,
|
||||||
|
0x95,0xcb,0x37,0xcc,0xbf,0x56,0x7b,0x2c,0xbf,0x72,0x45,0xb7,0xfe,
|
||||||
|
0x97,0x1e,0x94,0xde,0x5b,0x59,0x95,0xdf,0xe6,0xca,0xe6,0x95,0xc5,
|
||||||
|
0xf7,0xf3,0xdb,0xff,0x93,0x6f,0xb3,0xf1,0x64,0xf1,0xac,0x9b,0x3e,
|
||||||
|
0x55,0xdc,0xf4,0x3d,0x83,0x6f,0xfe,0xc3,0x80,0xb3,0xf2,0x99,0xfa,
|
||||||
|
0xc9,0x45,0x6d,0x2f,0x69,0x3d,0xbd,0x70,0xa7,0x4b,0xea,0xf5,0x5f,
|
||||||
|
0x95,0x5a,0x2e,0xdb,0x32,0x27,0x5b,0xce,0xff,0xd4,0x4d,0xd1,0x6b,
|
||||||
|
0x8c,0xb0,0x9d,0x5b,0xd7,0x3a,0xc3,0x3e,0x9c,0xd5,0x8d,0xa5,0x85,
|
||||||
|
0x57,0x1b,0x8b,0x0a,0x0b,0x1b,0x4f,0x17,0xe7,0x35,0x9e,0x2f,0xbe,
|
||||||
|
0xd4,0x78,0xa5,0xf0,0x7a,0xe3,0x97,0x85,0x15,0xad,0x33,0xe9,0xc3,
|
||||||
|
0x5f,0xcf,0x26,0x8d,0xa7,0x0b,0x3f,0x08,0x1d,0xc3,0xe4,0x6f,0xae,
|
||||||
|
0xb8,0x6c,0xc5,0x9e,0xef,0xe5,0x6b,0xbf,0xcd,0xe7,0xdf,0x7b,0x57,
|
||||||
|
0xae,0xc8,0xd7,0x7f,0xcf,0x37,0xed,0x3f,0xfc,0xa8,0xec,0x8e,0xca,
|
||||||
|
0x73,0xf9,0x0c,0x9b,0x95,0xaf,0xd9,0xe6,0xe4,0xb7,0xfb,0x8b,0xc6,
|
||||||
|
0x7b,0x7f,0xd2,0xed,0xbc,0x98,0xef,0x73,0xff,0xe1,0xcd,0xb6,0x03,
|
||||||
|
0x36,0xcd,0xbf,0x7f,0x6d,0x73,0xe1,0x67,0xb2,0x75,0xe5,0xae,0x63,
|
||||||
|
0x3f,0x3b,0xac,0xf5,0xf4,0xda,0x5d,0x2e,0xda,0x35,0x3f,0xdd,0x72,
|
||||||
|
0xd9,0xc1,0x1b,0xe6,0xe4,0x4e,0xd7,0x8d,0x2a,0xfd,0x59,0x8f,0x09,
|
||||||
|
0xd8,0x76,0x34,0x3e,0xac,0x25,0x85,0x87,0xb2,0x6b,0x4a,0x85,0x74,
|
||||||
|
0x50,0xe5,0xa2,0xf4,0x9c,0xca,0xf9,0xe9,0x80,0xca,0xe0,0x74,0x70,
|
||||||
|
0xa5,0x91,0x5d,0x5f,0x1e,0x5d,0x7f,0xb2,0xf8,0xde,0x87,0xbe,0x9e,
|
||||||
|
0xcd,0xbd,0x5e,0xb8,0x21,0xed,0x53,0xd9,0xfb,0xec,0x4b,0xb3,0x17,
|
||||||
|
0xf7,0x59,0x71,0x79,0xeb,0x6b,0x7f,0x5f,0x5b,0xd1,0x3a,0xf7,0x5a,
|
||||||
|
0x7e,0x7f,0xe3,0xc0,0xdb,0x2e,0xfb,0xe6,0xb0,0xbd,0x6a,0x27,0xe7,
|
||||||
|
0xb7,0x35,0x30,0x3d,0xad,0xd2,0x14,0x9b,0x92,0x33,0xd2,0xfe,0x95,
|
||||||
|
0x5a,0x36,0xb6,0xfc,0x4a,0xeb,0xff,0x87,0xf4,0xe1,0x6e,0xa7,0xef,
|
||||||
|
0xa8,0x4f,0x17,0x37,0xae,0xfb,0x76,0x5a,0xb8,0x7e,0xcd,0xb7,0x63,
|
||||||
|
0xf3,0x92,0xf2,0x55,0x37,0x7c,0x72,0xd3,0x9a,0xf0,0x13,0x57,0x4f,
|
||||||
|
0x28,0xad,0x6b,0x3c,0x5f,0xf8,0xd8,0x8c,0x36,0x43,0x5a,0xe6,0x63,
|
||||||
|
0xcb,0xbf,0xff,0xe9,0x8f,0x07,0xd8,0x1e,0xfd,0xa2,0x7e,0x7d,0xa9,
|
||||||
|
0xa9,0x76,0x64,0x72,0x62,0xed,0xfc,0x30,0x20,0x0e,0x0a,0x83,0xe2,
|
||||||
|
0x80,0x70,0x4e,0xed,0xa4,0x70,0x6c,0x3c,0x32,0x74,0x49,0x2f,0x4e,
|
||||||
|
0xde,0xf8,0xb3,0xae,0x77,0x6d,0xe1,0x95,0xfa,0xe8,0xe2,0xf7,0xe3,
|
||||||
|
0xbe,0xc9,0x7e,0xfd,0x4e,0x4d,0x1b,0xc7,0x8c,0x19,0x31,0xed,0xe0,
|
||||||
|
0x69,0x23,0x1f,0x3c,0x74,0xdc,0xc8,0x1f,0xf5,0x39,0xa7,0xf9,0x5b,
|
||||||
|
0xc3,0x76,0xab,0x1d,0x16,0x8f,0x49,0x0e,0x88,0xdd,0xc3,0x45,0xb1,
|
||||||
|
0x5a,0xad,0xd5,0x92,0xea,0xa0,0x78,0x66,0x38,0xac,0xd6,0x25,0xa4,
|
||||||
|
0xd9,0x82,0x0f,0x37,0x9f,0xb2,0xc1,0xa5,0x8d,0x33,0xef,0x73,0x13,
|
||||||
|
0x3a,0x0c,0xfb,0xc4,0xfc,0xb6,0x83,0x5a,0x7e,0xdf,0x21,0x5d,0x57,
|
||||||
|
0x59,0xd2,0xbc,0x63,0x79,0xe3,0xfc,0xfb,0x87,0x3b,0xce,0x6a,0xbd,
|
||||||
|
0xec,0xa7,0x5e,0x69,0x3b,0xb0,0xed,0xe2,0x4f,0x0f,0x18,0x98,0xad,
|
||||||
|
0x2b,0x6d,0xe9,0xe7,0x1c,0xd8,0x1a,0x2c,0x2f,0xdc,0x9c,0x1d,0x5c,
|
||||||
|
0x19,0x5a,0x9b,0x1c,0x66,0xc5,0x39,0x61,0x6e,0x3a,0x2f,0xcc,0x8f,
|
||||||
|
0x4f,0x87,0xd9,0x71,0x56,0x98,0x1a,0xc7,0x55,0x4f,0xc9,0xe7,0xd1,
|
||||||
|
0x73,0x8d,0xb7,0x0b,0x6f,0x36,0xde,0x2c,0xb6,0x58,0x96,0xaf,0x15,
|
||||||
|
0x17,0xd4,0xe7,0x14,0xe7,0xd4,0xe7,0xe7,0xa7,0x37,0x5e,0xc7,0x3b,
|
||||||
|
0x85,0xe7,0xeb,0x33,0x8b,0x13,0xeb,0x63,0x4b,0x63,0xeb,0x13,0x4a,
|
||||||
|
0x8f,0xd5,0x9f,0x2d,0xbe,0xdd,0x7a,0xfe,0xbb,0x85,0xc7,0xb3,0x9f,
|
||||||
|
0x94,0xce,0x8b,0x47,0x54,0xf6,0xaf,0x7d,0x39,0xb4,0x49,0xda,0x54,
|
||||||
|
0xdb,0x84,0x76,0xd5,0xf6,0xb1,0x6b,0x72,0x4a,0x5a,0xac,0x9c,0x1b,
|
||||||
|
0xf7,0x4b,0xae,0xaa,0xcd,0xab,0xbe,0x12,0x17,0x55,0x9f,0x89,0x0b,
|
||||||
|
0xc2,0xd3,0x71,0x56,0x75,0x6c,0xed,0xec,0xd0,0x3e,0x6d,0xae,0xfc,
|
||||||
|
0xa2,0xb1,0xa4,0xb8,0xfe,0x36,0xdf,0x28,0x2e,0x69,0xac,0x2a,0xac,
|
||||||
|
0x6a,0xbc,0xb5,0xe9,0x3e,0xbc,0xd9,0x78,0xab,0x75,0x4d,0xfa,0x44,
|
||||||
|
0x3e,0xe3,0xda,0xfc,0xeb,0xfa,0x3d,0xef,0xc7,0x2e,0xbd,0xa6,0xd2,
|
||||||
|
0x3a,0xff,0x5a,0xf6,0xbf,0x69,0xbe,0xdf,0xcd,0x3a,0x94,0x3f,0xb7,
|
||||||
|
0xaa,0x6d,0xff,0x96,0xf9,0xd7,0x66,0xda,0x67,0x86,0xae,0x4b,0x3f,
|
||||||
|
0xb3,0xfe,0xb2,0x4f,0x7c,0x6c,0xf0,0xf3,0x5b,0xfc,0x39,0x07,0xb6,
|
||||||
|
0x0a,0xf5,0xd9,0x85,0xee,0xb5,0x21,0xe1,0xd5,0xf4,0xa9,0x30,0x33,
|
||||||
|
0x7b,0x24,0x3c,0x9c,0x3e,0x12,0x1e,0x49,0xa7,0x27,0x8f,0xa6,0x33,
|
||||||
|
0xc2,0x13,0xf1,0xd9,0x70,0x66,0xbe,0x2e,0x4c,0xd3,0x21,0x95,0x21,
|
||||||
|
0xb9,0x41,0xe9,0xb0,0xca,0xcd,0xd9,0x88,0xf2,0xa9,0xf1,0xe4,0xe4,
|
||||||
|
0xc4,0xdc,0xf0,0x6c,0x41,0xbe,0x8e,0x5a,0x5d,0x78,0x32,0xbb,0xa2,
|
||||||
|
0xd4,0x37,0x9e,0x98,0x9c,0x10,0x7b,0x26,0x3d,0xe3,0x71,0xc9,0xf1,
|
||||||
|
0xf1,0x8c,0x4a,0x73,0x36,0xbd,0xb4,0x2c,0xbf,0xfe,0xb7,0xeb,0xe3,
|
||||||
|
0x8b,0x97,0xc4,0x63,0x2b,0xdd,0x62,0xe7,0xa4,0x53,0x6d,0xff,0xd0,
|
||||||
|
0x31,0xee,0x17,0xba,0xc4,0x13,0x92,0x8b,0xd2,0x46,0xf9,0xb0,0xda,
|
||||||
|
0x4f,0xc3,0x9a,0xb8,0x38,0xcc,0xcb,0x6f,0x6b,0x46,0xfa,0x50,0x98,
|
||||||
|
0x9a,0x3e,0x54,0x7d,0x3c,0x9d,0x56,0x6d,0xaa,0x75,0x4d,0xb2,0x74,
|
||||||
|
0x50,0x79,0x48,0xeb,0xed,0x0e,0xac,0xb4,0xac,0x07,0x1f,0xcd,0x8a,
|
||||||
|
0xe5,0xc1,0x9b,0xee,0x47,0xa5,0x32,0xab,0xbe,0xae,0x78,0xd6,0x1d,
|
||||||
|
0xeb,0xdf,0xe3,0x6d,0xfb,0xca,0xa7,0x06,0x0e,0x4e,0xaf,0x6a,0x7d,
|
||||||
|
0x6f,0xa3,0xed,0xd2,0x9d,0x2f,0x6e,0x6a,0x59,0xdf,0xd5,0xe3,0xfa,
|
||||||
|
0xf5,0xde,0x86,0xf7,0x40,0x36,0xee,0x87,0x5b,0xd7,0x82,0x5b,0xfa,
|
||||||
|
0x39,0x07,0xfe,0xf6,0x3e,0xc4,0x6b,0x84,0xab,0xeb,0x57,0x15,0x0f,
|
||||||
|
0x8c,0xaf,0x55,0x67,0x64,0xb7,0x86,0x51,0xd9,0xe8,0x64,0x4c,0x76,
|
||||||
|
0x77,0xb8,0x3b,0xbd,0x3b,0x8c,0x49,0x6f,0x0b,0xa3,0xd3,0x3b,0xc3,
|
||||||
|
0x41,0xb5,0xe3,0x92,0x5e,0xb5,0xfe,0xe1,0xbc,0x7c,0x6f,0x7c,0x41,
|
||||||
|
0xed,0xa0,0xea,0xa1,0xf1,0xa4,0x50,0x8e,0x97,0x56,0x1b,0xf9,0x5e,
|
||||||
|
0xb5,0x43,0x5a,0x4d,0xde,0xa8,0x3f,0x51,0xfc,0x41,0xfc,0x4e,0x32,
|
||||||
|
0x30,0x0e,0xaf,0x5e,0x13,0xaf,0x0b,0xd7,0xd4,0xae,0xa8,0x26,0xf1,
|
||||||
|
0xcc,0x6a,0xe7,0x5a,0x9f,0x70,0x7f,0x7d,0x49,0xf1,0xc6,0xb4,0x7b,
|
||||||
|
0xe5,0xc4,0x5a,0xa1,0xda,0xc8,0xcf,0xbf,0x2a,0xfe,0x30,0x0c,0xaf,
|
||||||
|
0x85,0xea,0x90,0xfc,0xba,0x8e,0x8a,0x87,0x85,0x33,0x6a,0xff,0x51,
|
||||||
|
0x7d,0x26,0xbb,0x3f,0xdc,0x95,0x8e,0x0b,0x63,0xd3,0x7b,0xc2,0x8d,
|
||||||
|
0xe9,0x0d,0xd5,0x51,0xf9,0xfc,0xbb,0x2e,0xee,0x19,0x0e,0xc9,0x67,
|
||||||
|
0xf2,0xb9,0xb5,0x73,0xc2,0x79,0xf1,0xd4,0xb0,0x4f,0xfa,0xb3,0x64,
|
||||||
|
0x50,0xbe,0x57,0xee,0x5f,0xfb,0x41,0x38,0x27,0x5e,0x10,0x4e,0x8b,
|
||||||
|
0xbb,0x87,0xeb,0xeb,0x4f,0x94,0x3e,0xf6,0x44,0xdb,0xc1,0xad,0xf3,
|
||||||
|
0x2d,0x5f,0xd3,0x3d,0x57,0x1f,0x50,0xfa,0xf4,0xe2,0xb6,0x03,0xda,
|
||||||
|
0xce,0xff,0xc4,0xa0,0x09,0x8d,0x75,0xc5,0x75,0x8d,0x99,0xc5,0x8f,
|
||||||
|
0xcf,0xdd,0xf0,0xef,0xf9,0x9e,0xb7,0xc3,0x84,0xcf,0xb5,0xbe,0x1f,
|
||||||
|
0xf2,0xb1,0x91,0x4f,0x94,0xb7,0xf8,0xeb,0xb2,0xc0,0x56,0x61,0x49,
|
||||||
|
0x76,0x66,0xb9,0x16,0x5f,0xad,0x5e,0x97,0x8d,0x49,0xc6,0x65,0x13,
|
||||||
|
0xc3,0x83,0xd9,0x94,0x30,0x29,0x9d,0x18,0xc6,0xa5,0x63,0xc3,0xf8,
|
||||||
|
0xf4,0x27,0x61,0x9f,0xd8,0x2b,0xfc,0x30,0xbe,0x59,0x9d,0x9f,0xaf,
|
||||||
|
0x05,0x9f,0x8b,0x47,0x87,0xee,0xb5,0xa7,0xaa,0x6f,0xc5,0x5f,0x84,
|
||||||
|
0xc5,0xd9,0x82,0x7c,0x0e,0x1d,0x14,0x26,0x65,0xa5,0x72,0xb7,0xda,
|
||||||
|
0xc4,0x7c,0x0f,0xfb,0x52,0x78,0x29,0xbe,0x1c,0x5e,0x4a,0x9f,0x0d,
|
||||||
|
0x4f,0xc5,0x47,0xab,0x23,0x6a,0x5f,0xaf,0x7e,0x2f,0xbb,0xb7,0x72,
|
||||||
|
0x74,0xed,0x82,0x30,0x37,0xbf,0xfc,0x1b,0xe9,0x92,0xf0,0x6e,0xf6,
|
||||||
|
0x6e,0x58,0x9a,0xbe,0x15,0x16,0xa7,0x6f,0x86,0x4b,0x62,0xbb,0xea,
|
||||||
|
0x63,0xf1,0xd5,0x7c,0xc6,0x8e,0x0b,0x93,0xe2,0xcd,0xe1,0xa2,0x98,
|
||||||
|
0xe4,0x73,0x77,0x54,0xf5,0x96,0xf4,0x96,0x70,0x6f,0xfa,0xcd,0xea,
|
||||||
|
0x5e,0xf1,0xc5,0xea,0xa2,0x74,0x4e,0x98,0x9f,0x3e,0x1a,0xda,0xc7,
|
||||||
|
0x0b,0x92,0xa3,0xe2,0xd4,0xf0,0x5c,0x7e,0x7a,0x5e,0xfa,0x5c,0x18,
|
||||||
|
0x14,0xbf,0x10,0x7e,0x96,0x9d,0x55,0xd9,0xf8,0xbe,0xef,0x67,0xc7,
|
||||||
|
0x76,0x19,0xb6,0x2e,0xeb,0x52,0xfe,0xec,0xb2,0xb6,0xfd,0x77,0xbe,
|
||||||
|
0xab,0x69,0xd8,0xc6,0xc7,0xb6,0xeb,0xe4,0x5d,0x86,0xb6,0xce,0xbf,
|
||||||
|
0x55,0x9f,0xeb,0xdf,0xba,0x37,0x6e,0x39,0x36,0xa6,0xbe,0xce,0x7b,
|
||||||
|
0xbf,0x40,0xab,0x67,0xb2,0xae,0xe5,0x99,0xe9,0xd4,0x70,0x6f,0x36,
|
||||||
|
0x31,0x99,0x94,0x4d,0x4a,0xae,0x4e,0xcb,0xa1,0x10,0x87,0x56,0x87,
|
||||||
|
0xc4,0x6a,0xf5,0x47,0x71,0x58,0xd8,0x2f,0x7e,0x3b,0x79,0x3a,0xbe,
|
||||||
|
0x16,0x66,0xa7,0x73,0xc3,0x9c,0xb4,0x6f,0x78,0xbe,0xb6,0xaa,0x3a,
|
||||||
|
0x3b,0x9b,0x9e,0x4c,0xcf,0x16,0xe6,0xf3,0xea,0x2b,0xa1,0x9a,0x76,
|
||||||
|
0x4d,0xa6,0xe5,0xe7,0xcd,0xc8,0x67,0xe6,0xfd,0xe9,0xbd,0xf9,0x5a,
|
||||||
|
0xee,0xde,0xea,0xdd,0xe9,0xa4,0xf0,0x64,0x2c,0xe4,0x7f,0x7b,0x5e,
|
||||||
|
0xd2,0xbb,0xb6,0xbc,0xfa,0x46,0xf6,0x54,0x78,0xbc,0x3e,0x27,0x59,
|
||||||
|
0x50,0x7f,0x26,0x59,0xd8,0x78,0x21,0x79,0xa5,0xfe,0x5e,0x38,0x39,
|
||||||
|
0xee,0x57,0x7d,0x27,0x1d,0x9f,0xff,0xcd,0xfd,0x61,0x7c,0x6c,0x0a,
|
||||||
|
0xbb,0xd5,0x3a,0x84,0x9b,0xd2,0xfb,0xf2,0x79,0x38,0x3a,0xdc,0x93,
|
||||||
|
0xf6,0xa8,0x76,0x8c,0x77,0x87,0x9f,0x67,0x8f,0x85,0x59,0xd9,0x9c,
|
||||||
|
0xa4,0x47,0x3c,0x38,0x29,0xc4,0x95,0xd5,0x47,0xf3,0xd3,0xf3,0xb2,
|
||||||
|
0x51,0x61,0xaf,0x78,0x52,0xf2,0x60,0xf3,0x8e,0x95,0xd6,0xd7,0xf3,
|
||||||
|
0x5a,0x8f,0x71,0x8e,0xc5,0x75,0xd9,0x0e,0x95,0xd6,0xbd,0x6f,0x3a,
|
||||||
|
0x79,0xd3,0xfa,0x6e,0xc0,0xa8,0x4f,0x17,0x36,0xbe,0x07,0xd2,0xfa,
|
||||||
|
0x5a,0x60,0xbe,0x4e,0x7c,0xa2,0x65,0x6d,0xb8,0x15,0x3c,0xef,0xc0,
|
||||||
|
0x96,0xf7,0x48,0x7a,0x60,0xe5,0xb5,0x7c,0x76,0x4d,0xcc,0x26,0x85,
|
||||||
|
0x87,0xb3,0xbb,0xc2,0x7e,0xb5,0x2f,0x86,0xdd,0x6b,0xbb,0x87,0x3d,
|
||||||
|
0x6a,0xed,0xf3,0x3d,0xe8,0x01,0xa1,0x4b,0xec,0x96,0xbc,0x19,0xa7,
|
||||||
|
0xe4,0xeb,0xc1,0xfb,0xf2,0x3d,0xea,0xd4,0xf0,0x4e,0x36,0x2e,0xb9,
|
||||||
|
0x3f,0x9b,0x90,0x8c,0xcf,0xa6,0x26,0xe3,0xd2,0x7d,0x42,0x9f,0xda,
|
||||||
|
0xc0,0xf0,0xaf,0xe9,0x5d,0xe1,0x8e,0x7c,0xcf,0x7c,0x73,0x1c,0x1a,
|
||||||
|
0xce,0x8f,0x57,0x56,0x47,0xa7,0x37,0xe7,0x73,0x70,0x74,0xe8,0x10,
|
||||||
|
0xbb,0x84,0x29,0xf1,0xf5,0x30,0xbe,0x3e,0x25,0x99,0x56,0x7f,0x24,
|
||||||
|
0x4c,0xcb,0x26,0xe4,0x7b,0xe2,0xa9,0x61,0x46,0xf6,0x48,0xd8,0xb3,
|
||||||
|
0x76,0x5c,0xbe,0x8e,0xbc,0x37,0x5f,0x63,0x4e,0x08,0x3f,0xca,0xd7,
|
||||||
|
0x73,0x83,0xd2,0x13,0x2a,0x97,0xc7,0xc7,0xc3,0x6d,0xd9,0x98,0x7c,
|
||||||
|
0xfd,0xd7,0x2b,0x74,0x8d,0x67,0x84,0xa7,0xb2,0x3b,0x93,0x3b,0xeb,
|
||||||
|
0x93,0x93,0x73,0xe3,0xd7,0xab,0x2f,0xc5,0x19,0xc9,0xed,0xd9,0xb8,
|
||||||
|
0x7c,0x3e,0x7e,0x23,0x74,0x4a,0xc7,0x54,0xae,0xb8,0xe1,0x93,0xa5,
|
||||||
|
0x8d,0xb3,0xed,0xe3,0x57,0xce,0x2c,0xaf,0xab,0xf7,0x2d,0xed,0x50,
|
||||||
|
0x6b,0x0a,0x1d,0x6a,0x9f,0x09,0x83,0x36,0xac,0xf1,0x46,0x5d,0xb7,
|
||||||
|
0xd3,0xa6,0xcb,0x6c,0x7a,0xed,0x6f,0x2b,0x78,0xce,0x81,0xad,0xc3,
|
||||||
|
0xe4,0xb4,0x4b,0xe5,0xad,0x7c,0xdd,0x37,0x39,0xdf,0xf7,0x3e,0x96,
|
||||||
|
0xde,0x16,0xda,0xd7,0xbe,0x95,0xcf,0xbc,0x2e,0xe1,0x90,0xb8,0x7f,
|
||||||
|
0xfe,0xb3,0x47,0x72,0x76,0x3c,0x3e,0x79,0x2f,0x4e,0xca,0xe7,0xe3,
|
||||||
|
0xe4,0x30,0x35,0x5f,0xc7,0x3d,0x90,0x4d,0x4e,0x1e,0xc8,0xa6,0x24,
|
||||||
|
0x13,0xb3,0x07,0x93,0xd1,0x71,0xaf,0xd0,0x39,0xdf,0x17,0x3f,0x96,
|
||||||
|
0xde,0x51,0x1d,0x9f,0xde,0x13,0x4e,0x88,0x5f,0xad,0xee,0x5b,0x3b,
|
||||||
|
0x26,0x4c,0x4e,0xef,0xc8,0xe7,0x5f,0xcb,0x2c,0x3d,0x38,0xfc,0x32,
|
||||||
|
0x3e,0x94,0xcf,0xbd,0x87,0xc3,0x13,0xd9,0x4d,0xc9,0x59,0xf1,0xb8,
|
||||||
|
0xd0,0x14,0xcf,0x0c,0x85,0x74,0x68,0x68,0x53,0xbb,0x30,0xdf,0x2b,
|
||||||
|
0xdf,0x9b,0xaf,0xf5,0x26,0x86,0x62,0xdc,0x37,0x8c,0xce,0x4e,0xad,
|
||||||
|
0x8c,0x8b,0x33,0xaa,0xa3,0xf3,0x19,0x3c,0x36,0xed,0x91,0x5f,0xd7,
|
||||||
|
0x91,0xc9,0x93,0xe9,0x7d,0xc9,0xbd,0xf9,0x5c,0xbe,0x3c,0xad,0x84,
|
||||||
|
0xb7,0xd3,0xd1,0xf9,0xef,0x53,0xf2,0xfb,0xf3,0xf9,0x50,0xad,0xbf,
|
||||||
|
0x5e,0x6a,0xba,0x6b,0xe7,0x61,0x9b,0x1f,0xef,0xbc,0xae,0x31,0xb9,
|
||||||
|
0xd8,0x74,0xcd,0x4e,0xe5,0xcf,0x2d,0x6f,0xd3,0xff,0x33,0x1b,0x8e,
|
||||||
|
0x77,0x5e,0x97,0x6d,0x78,0xcf,0x77,0xc3,0xfc,0xf3,0xda,0x1f,0xb0,
|
||||||
|
0xb9,0x29,0xf9,0xfc,0x7b,0x3b,0x5f,0xd7,0x4d,0xcd,0xa6,0x86,0x29,
|
||||||
|
0xe9,0x03,0x61,0x62,0x9c,0x1c,0x26,0xd5,0x26,0x86,0x31,0xf1,0x82,
|
||||||
|
0xea,0x7e,0x69,0x73,0x52,0x49,0x07,0x25,0xef,0xe6,0x7b,0xd4,0x29,
|
||||||
|
0xf9,0x7a,0x6f,0x46,0x36,0x2b,0x3c,0x99,0x4d,0xcb,0x7f,0x9f,0x1c,
|
||||||
|
0x26,0xe7,0x6b,0xb8,0x6b,0xe3,0xae,0xf9,0x3e,0xf6,0xad,0x30,0x26,
|
||||||
|
0x1d,0x1b,0x26,0xa6,0x3f,0x0b,0x9f,0xcf,0xd7,0x8b,0xc7,0xc4,0x43,
|
||||||
|
0x92,0x39,0xf1,0xce,0x7c,0xbd,0x38,0x3a,0xec,0x11,0x8f,0xaf,0xae,
|
||||||
|
0xce,0x2f,0xfb,0x70,0xf6,0x58,0xb2,0x30,0x3b,0x33,0x9f,0x79,0x9f,
|
||||||
|
0x0f,0x6d,0x6b,0x6d,0xf2,0xf5,0x65,0xfb,0xb0,0x7f,0xed,0x92,0xb0,
|
||||||
|
0x30,0xde,0x91,0xff,0xed,0x3d,0xe1,0xf2,0xb8,0x67,0x72,0x72,0xec,
|
||||||
|
0x95,0x2c,0x89,0xf7,0x54,0xef,0xce,0xee,0xc9,0xe7,0xdf,0xe1,0xe1,
|
||||||
|
0xc2,0xf4,0x3b,0x95,0x7c,0xf6,0x25,0x63,0xb3,0x7b,0xc3,0x7d,0xd9,
|
||||||
|
0x82,0x7c,0xfe,0xde,0x91,0xdf,0xc7,0xab,0x92,0xcf,0xc7,0xde,0xc9,
|
||||||
|
0xd3,0x8d,0xb5,0xc5,0xcf,0x4c,0x6b,0xb3,0xfe,0xb5,0xbd,0x65,0x9f,
|
||||||
|
0xed,0xdf,0x25,0x9f,0x77,0x4b,0xb3,0xa6,0xd2,0xce,0x4b,0xdb,0x5e,
|
||||||
|
0xdc,0x7a,0xfc,0x5f,0xb6,0xae,0xd2,0xfa,0xf8,0x36,0x3b,0xcf,0x6b,
|
||||||
|
0x7f,0xc0,0x1f,0x9b,0x9a,0xee,0x5b,0x79,0x25,0x9d,0x1b,0x1e,0x6a,
|
||||||
|
0x99,0x6b,0xe9,0xa4,0x30,0x3b,0x9d,0x17,0xe6,0xc4,0x27,0xc3,0xdc,
|
||||||
|
0x74,0x76,0x38,0x2e,0x9e,0x12,0xbe,0x1f,0x6f,0x0b,0x2f,0x67,0xf7,
|
||||||
|
0xe7,0xb3,0x67,0x7a,0x32,0x39,0xed,0x9f,0x54,0xd3,0x59,0xf9,0x7a,
|
||||||
|
0x6e,0x4a,0x3e,0xff,0x66,0x25,0x85,0xf8,0xd5,0x50,0x8f,0x8b,0xc2,
|
||||||
|
0xed,0xf9,0xfc,0x1b,0x97,0xde,0x1e,0x2a,0xb5,0xe1,0xa1,0x11,0x6f,
|
||||||
|
0x0a,0x4f,0xe7,0xb3,0xef,0xbe,0xf4,0xfa,0xea,0x97,0x63,0xbf,0xb0,
|
||||||
|
0x32,0x9f,0x61,0xd3,0xb3,0x47,0x93,0xd9,0xf9,0xfa,0x2f,0xc4,0xcb,
|
||||||
|
0xaa,0x3f,0x8e,0x31,0x1c,0x58,0x3b,0x3c,0x5c,0x94,0x9e,0x18,0x16,
|
||||||
|
0xa6,0xb7,0xe4,0x7f,0x3b,0x2a,0x8c,0x8e,0xe5,0x70,0x49,0x6d,0x6e,
|
||||||
|
0x75,0x6e,0x7e,0x1d,0xe3,0xb3,0xb1,0xf9,0xda,0xb1,0x63,0xa8,0xa5,
|
||||||
|
0xe7,0x56,0x8a,0xd9,0x23,0xc9,0x3d,0xd9,0xd8,0x7c,0xaf,0x3d,0x29,
|
||||||
|
0xdc,0x91,0x8d,0xcf,0xaf,0xb3,0x73,0x68,0x9f,0xde,0x52,0x59,0xdd,
|
||||||
|
0x78,0xae,0xb0,0xe9,0xbd,0xdf,0x0d,0x73,0x2d,0x6e,0xfc,0x0c,0xf0,
|
||||||
|
0x66,0x9f,0x77,0x5b,0xd7,0x18,0x55,0xdc,0x78,0x7c,0x74,0xcb,0x31,
|
||||||
|
0x32,0xd1,0xfc,0x03,0x36,0xf3,0x7c,0xd6,0xb5,0x5c,0x89,0xb3,0xf3,
|
||||||
|
0xb9,0x37,0x3b,0x3c,0x99,0xce,0x0c,0xd3,0xf2,0x7d,0xeb,0x9d,0xe9,
|
||||||
|
0x98,0xdc,0xc3,0x21,0xc4,0x6f,0x86,0xa3,0xe3,0xd3,0x61,0x4e,0x3e,
|
||||||
|
0x7f,0x1e,0xa8,0xcf,0x48,0x7e,0x90,0xee,0x1d,0x0e,0x8a,0x0f,0x87,
|
||||||
|
0xc7,0xf3,0x7d,0xe8,0x94,0x6c,0x66,0x38,0xbe,0xb6,0x4f,0xb8,0x2b,
|
||||||
|
0x3e,0x9e,0x5f,0xb6,0xe5,0x7d,0x8f,0x49,0xd5,0xf9,0xe9,0x8b,0x61,
|
||||||
|
0x51,0xfa,0x72,0x78,0x24,0x9d,0x12,0x1e,0x4f,0x6b,0x61,0x8f,0xda,
|
||||||
|
0x19,0x61,0x5d,0xbe,0xf6,0x9b,0x51,0x9f,0x95,0xcc,0xca,0x9e,0x4e,
|
||||||
|
0x5e,0x49,0x5f,0x0b,0x8b,0xd3,0x57,0xc2,0xf5,0xe9,0x01,0x21,0xa6,
|
||||||
|
0x07,0x27,0xe3,0xf2,0x79,0x3b,0x26,0x9f,0x95,0x77,0xa6,0x33,0xc2,
|
||||||
|
0x2b,0xf9,0xed,0xdc,0x95,0xaf,0xfd,0xc6,0x67,0xf7,0x25,0x37,0xc6,
|
||||||
|
0xdd,0xc3,0xcf,0xb2,0x1f,0x96,0x8f,0xcb,0x67,0xf1,0xe8,0xfa,0xd8,
|
||||||
|
0x70,0x4f,0x76,0x77,0xee,0xe1,0x50,0x8a,0x5f,0x09,0xa1,0xbe,0xb8,
|
||||||
|
0xb4,0xae,0x31,0xa1,0xb8,0xf1,0xb3,0x1e,0x1b,0xe7,0xda,0xc6,0xe3,
|
||||||
|
0x5b,0x36,0x1d,0xff,0xd7,0xf2,0xf8,0x1a,0x4b,0x0a,0x3b,0xce,0x68,
|
||||||
|
0x3b,0x64,0xe3,0x7b,0xc0,0x1d,0x36,0xce,0x45,0x80,0xc6,0xd2,0xc2,
|
||||||
|
0xe3,0xd9,0x80,0xf2,0xfe,0xf1,0xb4,0x30,0x2c,0xc6,0x6a,0x2d,0x2d,
|
||||||
|
0x56,0xaf,0xc9,0xe7,0xdf,0xad,0xf9,0xba,0xec,0xe6,0x74,0x5c,0x18,
|
||||||
|
0x1e,0xdb,0xe7,0xfb,0xd9,0xb7,0xf3,0xb5,0xe1,0x94,0xf0,0x68,0x36,
|
||||||
|
0x31,0xd9,0x27,0x9e,0x95,0x1c,0x16,0x67,0xe5,0xf3,0x70,0x4a,0x78,
|
||||||
|
0x20,0x9d,0x16,0xbe,0x59,0x3b,0x28,0xcc,0x88,0x53,0x5a,0x8f,0x17,
|
||||||
|
0xbc,0x3b,0xbd,0xa5,0x7a,0x53,0x1c,0x15,0x6e,0x4b,0x6f,0x0e,0xd7,
|
||||||
|
0xa4,0xd7,0x87,0x5b,0x63,0xef,0x96,0xd7,0x11,0x93,0x87,0xb3,0xf9,
|
||||||
|
0xc9,0x82,0xfa,0x82,0x64,0x7e,0xfd,0xe9,0x64,0x5e,0x3e,0xcf,0xe6,
|
||||||
|
0x66,0xf3,0xc2,0x63,0x71,0xff,0x7c,0xfe,0x9d,0x55,0x39,0xb6,0x76,
|
||||||
|
0x4d,0xb8,0x23,0xdf,0xff,0xde,0x9b,0xcf,0xcf,0xe1,0xe9,0x6d,0xd5,
|
||||||
|
0xf1,0xe9,0xf8,0x30,0x2e,0x7b,0x20,0xc9,0xe2,0x5e,0xe1,0xce,0x6c,
|
||||||
|
0x60,0xb9,0x5f,0x7c,0x2e,0xdc,0x9e,0x8d,0xcb,0xd7,0x80,0xf7,0xe6,
|
||||||
|
0xe7,0xcf,0x0c,0x17,0xc5,0x4e,0x61,0x6a,0xeb,0xb1,0x7d,0x7f,0xb4,
|
||||||
|
0xae,0xcb,0x66,0x96,0x37,0x1d,0xeb,0xb7,0xf9,0x3a,0xaf,0x3e,0xe8,
|
||||||
|
0x0f,0xc7,0x40,0xb7,0xbe,0xfe,0xf7,0x9c,0xf9,0x07,0x1f,0x11,0x6b,
|
||||||
|
0x5b,0xbf,0xcb,0xef,0xbf,0xb7,0xba,0xf1,0x48,0xf1,0xdc,0xf4,0xbb,
|
||||||
|
0x95,0x43,0xe3,0x9e,0x61,0xcf,0xda,0xde,0x61,0xef,0xb8,0x47,0x38,
|
||||||
|
0x37,0xce,0xae,0xde,0x96,0xef,0x79,0x6f,0x4f,0x27,0x84,0x18,0xbf,
|
||||||
|
0x16,0xce,0x8a,0x2b,0xc3,0xc4,0x6c,0x5a,0x32,0x27,0xfb,0x49,0xd8,
|
||||||
|
0x33,0x5e,0x56,0x39,0x22,0x2e,0x0e,0x33,0xb3,0xc9,0xe1,0xc1,0x7c,
|
||||||
|
0x8d,0xb8,0x47,0xed,0xe8,0x64,0x7e,0x1c,0x57,0x6d,0x3d,0xe6,0x25,
|
||||||
|
0x1e,0x19,0x3a,0xd7,0x0e,0x0b,0x87,0xc4,0x83,0xf2,0x35,0x62,0xa7,
|
||||||
|
0x70,0x68,0xdc,0x27,0xdf,0x3b,0x1f,0x53,0xe9,0x9a,0x5e,0x1c,0x4a,
|
||||||
|
0xe9,0xb0,0x6a,0xbf,0x7c,0x8f,0x3c,0x3b,0x7b,0xa0,0x75,0x8f,0x3d,
|
||||||
|
0x25,0x3d,0xa0,0x7a,0x61,0xbe,0xbf,0x6d,0x5f,0x3b,0x20,0xf4,0xce,
|
||||||
|
0xf7,0xd8,0x27,0xc5,0x6f,0x85,0x0e,0xb5,0x47,0xab,0x93,0xf2,0x3d,
|
||||||
|
0xee,0xf8,0x7c,0xcf,0x7b,0x52,0x3c,0x26,0x5c,0x99,0x76,0xa9,0xcc,
|
||||||
|
0x8e,0x8f,0xe4,0x6b,0xc2,0x89,0x61,0x4a,0x3e,0xff,0xee,0x6f,0x79,
|
||||||
|
0xbd,0xb1,0xf6,0xf5,0x30,0xb6,0xb1,0xa6,0xb8,0xb6,0x7e,0x55,0x71,
|
||||||
|
0xd3,0xf7,0x5b,0xb5,0xce,0xbf,0x41,0xe5,0xcd,0x3f,0xeb,0x71,0x6b,
|
||||||
|
0x63,0x6d,0xb1,0xe5,0xf1,0xfd,0x78,0xe4,0xc7,0x2a,0x9b,0xbf,0xff,
|
||||||
|
0xf1,0xa9,0x9b,0x06,0x15,0xff,0xb7,0xe7,0x04,0xf8,0x68,0x58,0xd5,
|
||||||
|
0xf8,0x49,0xf1,0x90,0x5a,0xa5,0xfa,0xbd,0xd8,0x27,0x1c,0x99,0xcf,
|
||||||
|
0xae,0x43,0xe3,0x51,0xe1,0xaa,0xda,0xec,0xea,0x2d,0x2d,0xaf,0xc9,
|
||||||
|
0xe5,0xfb,0xcd,0xfe,0xf9,0xfc,0xcb,0xe2,0x3b,0x61,0x42,0x36,0x3d,
|
||||||
|
0x2c,0xc8,0x86,0x85,0x43,0xd2,0x91,0x95,0x9e,0xb5,0xd5,0x61,0x5a,
|
||||||
|
0xcb,0x7b,0x1a,0xe9,0xe5,0xe1,0x6b,0xb1,0x67,0x78,0x36,0xde,0x95,
|
||||||
|
0xef,0x61,0xef,0xca,0xe7,0xdf,0x5e,0xd5,0x4e,0xf1,0xe0,0xa4,0x53,
|
||||||
|
0xdc,0x37,0x7c,0xad,0xf6,0x8d,0x7c,0x56,0x1e,0x91,0x9c,0x19,0x9b,
|
||||||
|
0x92,0x5d,0x6b,0xbb,0x85,0xaf,0xd6,0xbe,0x12,0xbe,0x5c,0xbb,0x37,
|
||||||
|
0xbc,0x9c,0x4d,0x0d,0x53,0xf3,0xf9,0x77,0x4f,0xec,0x58,0xed,0x1e,
|
||||||
|
0x7b,0x27,0x47,0xc6,0xdd,0xc2,0x17,0x6b,0xed,0x72,0x7b,0x87,0x5a,
|
||||||
|
0x7c,0xa5,0x3a,0x2e,0x9f,0x7f,0x0f,0x65,0xf7,0x27,0x7b,0xc7,0x73,
|
||||||
|
0x92,0x9e,0xb5,0x6b,0xc3,0xb2,0xf4,0x9e,0x64,0x7c,0x76,0x7f,0xcb,
|
||||||
|
0xb1,0x89,0xf9,0x0c,0x7e,0x28,0x5f,0x37,0x7e,0x23,0x24,0xf5,0x65,
|
||||||
|
0xa5,0x35,0x9b,0xef,0x7f,0x17,0x7f,0x7a,0xc0,0x80,0xf8,0x99,0x64,
|
||||||
|
0xd3,0x9c,0x9b,0xb1,0xe3,0x90,0xb7,0x1a,0xf9,0xe3,0x6b,0x2c,0x2a,
|
||||||
|
0x6c,0xda,0x13,0x6f,0xd0,0x66,0xc6,0xc7,0x86,0x4c,0xde,0x30,0x1b,
|
||||||
|
0x81,0x8f,0xb6,0xf7,0xea,0xe5,0x52,0xa1,0xf6,0xab,0x6a,0xcb,0x3a,
|
||||||
|
0xeb,0xbe,0xda,0x9d,0x61,0x4c,0x6d,0x42,0x58,0x18,0xef,0xaa,0xde,
|
||||||
|
0x9c,0xde,0x96,0xef,0x37,0x1f,0x0d,0xdd,0xf2,0x39,0x35,0x36,0x5d,
|
||||||
|
0x54,0x9d,0x92,0x3d,0x16,0x16,0xa4,0x7d,0xc2,0x49,0xe9,0xd0,0xca,
|
||||||
|
0x80,0xda,0xca,0x30,0x21,0x9d,0x18,0x1e,0x8c,0x17,0x86,0x03,0x63,
|
||||||
|
0x8f,0xf0,0x54,0x3e,0xff,0x46,0xe5,0x97,0xbf,0x33,0x0e,0xad,0x9e,
|
||||||
|
0x1e,0xfb,0x86,0xbe,0xb5,0x8b,0x43,0x23,0xde,0x12,0x0e,0xcf,0xf7,
|
||||||
|
0xca,0x3d,0x6b,0xb7,0x86,0x6a,0xbc,0x20,0x9c,0x5d,0x3b,0x3b,0x0c,
|
||||||
|
0xa9,0xce,0xaf,0xce,0xcd,0xe7,0xe6,0xfd,0xe9,0xe4,0x70,0x55,0xbe,
|
||||||
|
0x36,0xec,0x1c,0xef,0x09,0x3f,0x8d,0x85,0xea,0xb9,0xf1,0x7b,0xd5,
|
||||||
|
0x8b,0x6b,0xa3,0xc2,0x3b,0xe9,0xf4,0xfc,0x36,0xa7,0x86,0xa7,0xb3,
|
||||||
|
0xa1,0x61,0xaf,0x78,0x7a,0xf2,0xdd,0xda,0xbf,0x55,0x1f,0xcc,0xee,
|
||||||
|
0xce,0xf7,0xd9,0x31,0x19,0x90,0xef,0x9b,0x27,0xa6,0x0f,0x86,0x05,
|
||||||
|
0xf9,0x3e,0xbd,0x57,0xb6,0xa8,0xbc,0x66,0xf3,0xcf,0xb6,0xb5,0x7c,
|
||||||
|
0x9f,0xd5,0xe8,0x4f,0x6f,0xfa,0xae,0xab,0x5d,0x26,0xef,0x3a,0xb4,
|
||||||
|
0xf5,0xf1,0xd5,0xfb,0xae,0xff,0x3c,0xdc,0xc6,0x63,0x9f,0x37,0xbd,
|
||||||
|
0x36,0xb8,0xb4,0xb4,0xa5,0x9f,0x77,0x60,0xcb,0x5b,0x9c,0x9d,0x5e,
|
||||||
|
0x9a,0x90,0xef,0x6f,0x9f,0x4f,0x7f,0x1e,0x16,0xe7,0x5e,0x4a,0x17,
|
||||||
|
0x86,0xb1,0xe9,0x0d,0xe1,0xf6,0x7c,0xbf,0xf9,0x48,0x7a,0x63,0xd8,
|
||||||
|
0xb5,0x76,0x78,0x78,0x2e,0x3e,0x15,0x1e,0xcd,0xe6,0x26,0x73,0xf3,
|
||||||
|
0xb5,0xd7,0x25,0xe9,0x99,0x95,0x31,0xf1,0xcd,0x7c,0xfe,0x4d,0x0e,
|
||||||
|
0x53,0xe3,0x77,0xc2,0x71,0xb1,0x67,0x72,0x47,0x9c,0x50,0xbd,0x25,
|
||||||
|
0xb6,0xbc,0x5e,0xf8,0x60,0x78,0x22,0x3e,0x55,0x7d,0x36,0xbe,0x1e,
|
||||||
|
0x7e,0x9d,0xce,0x0e,0xfb,0xc6,0xb3,0x93,0xf3,0x6a,0xff,0xa7,0xba,
|
||||||
|
0x3c,0x5b,0x91,0x2c,0x4b,0x97,0x85,0x5f,0xa5,0x2f,0x85,0x49,0xe9,
|
||||||
|
0xd4,0xd6,0xcf,0xd6,0x9d,0x9c,0xef,0x77,0x8f,0x88,0xef,0x87,0x17,
|
||||||
|
0xf3,0xdb,0x5b,0x94,0x9f,0xff,0x56,0xfa,0x6e,0xf5,0xf1,0xec,0xde,
|
||||||
|
0x64,0x5a,0xf6,0x78,0xb8,0x2f,0xdd,0xab,0x7a,0x54,0x3c,0x32,0x79,
|
||||||
|
0x35,0xbe,0x5a,0x1d,0x9d,0x4e,0xc9,0xe7,0xe5,0x01,0xa1,0x43,0x5c,
|
||||||
|
0x9a,0xdf,0x9f,0x99,0xe1,0x85,0xf4,0x9a,0xd0,0x21,0x9d,0x52,0x59,
|
||||||
|
0xdb,0xbc,0xa6,0xb0,0xe9,0xf8,0x97,0x3f,0xd2,0xf2,0xf9,0xb7,0x96,
|
||||||
|
0xc7,0xd6,0x77,0xe3,0xf1,0xd1,0xf9,0xfe,0x78,0xd3,0x5e,0x79,0xc3,
|
||||||
|
0xf7,0xe1,0x6f,0xe9,0xe7,0x1d,0xd8,0xf2,0xe6,0x64,0x47,0x97,0x17,
|
||||||
|
0xc4,0xd9,0xf9,0x4c,0x9a,0x14,0xc6,0xa5,0x77,0x26,0xa3,0xd2,0x9f,
|
||||||
|
0x85,0x1b,0xd3,0x31,0xf9,0x7e,0x73,0x4a,0x18,0x9f,0x7e,0x27,0xec,
|
||||||
|
0x13,0x8f,0xcf,0xd7,0x65,0x4f,0x84,0xd9,0xd9,0xf3,0xc9,0x94,0xb8,
|
||||||
|
0x6b,0xa8,0xa7,0x47,0x55,0x5e,0x8e,0xcf,0x54,0x27,0xa7,0x0f,0x84,
|
||||||
|
0x71,0xb1,0x43,0xf5,0xe2,0xf4,0x7b,0x95,0x93,0xe2,0xf8,0xea,0xed,
|
||||||
|
0xe9,0xed,0xf9,0x1a,0xf0,0xae,0xf0,0x70,0xf6,0x64,0x98,0x9b,0x7b,
|
||||||
|
0x3c,0x3b,0x29,0x1c,0x9c,0x5e,0x98,0xfc,0x38,0xae,0x0a,0x4f,0x65,
|
||||||
|
0x2f,0x25,0x2f,0x66,0x8b,0xc2,0xfc,0x7c,0x3f,0xfd,0x50,0x3a,0x2d,
|
||||||
|
0x99,0x98,0xc6,0xb0,0x5b,0xad,0x67,0xe8,0x53,0xfb,0x79,0x18,0x9d,
|
||||||
|
0xde,0x97,0x9f,0xf7,0x58,0x3e,0x5f,0x27,0xe5,0x7b,0xec,0x87,0x93,
|
||||||
|
0xe9,0xf5,0x7b,0x92,0xa6,0xf8,0x95,0x70,0x4c,0xed,0xba,0xb0,0x36,
|
||||||
|
0xbd,0x3b,0x99,0x9c,0xce,0x08,0xa5,0xda,0xae,0xd5,0xf6,0xf1,0x85,
|
||||||
|
0xf0,0x5c,0xfa,0x54,0x3e,0x2f,0x67,0xe4,0xb3,0xf0,0x87,0x95,0x35,
|
||||||
|
0xcd,0xab,0x0b,0x9b,0xbe,0xfb,0x65,0xc3,0x1a,0x70,0xe3,0x71,0x7e,
|
||||||
|
0x9f,0xbc,0xe1,0xaa,0x62,0xcb,0xda,0x6f,0xe3,0xcc,0x6b,0x59,0x0f,
|
||||||
|
0xee,0x38,0xbd,0xcd,0x90,0x4d,0x97,0x6d,0xfd,0x7e,0x04,0x7b,0x60,
|
||||||
|
0xf8,0xa8,0x9b,0x92,0x1e,0x52,0xb9,0x26,0x5e,0x15,0x6e,0x8e,0xb7,
|
||||||
|
0x87,0xdb,0xd3,0x5b,0xab,0xb7,0xa4,0x2d,0x3f,0x47,0x87,0x5b,0xd3,
|
||||||
|
0xcb,0x43,0xf7,0x5a,0xbb,0xea,0x49,0xb1,0x4f,0x32,0x2d,0x5f,0x73,
|
||||||
|
0xfd,0x34,0xbd,0xad,0x5a,0xac,0x7d,0x25,0x5c,0x9e,0x5f,0x7e,0x7a,
|
||||||
|
0xbc,0xb2,0x3a,0x22,0x5e,0x16,0x86,0xe5,0xf3,0xf0,0xca,0xec,0xea,
|
||||||
|
0xf2,0xee,0xf1,0xac,0xea,0x15,0xf1,0xfa,0x70,0x53,0x7a,0x73,0xcb,
|
||||||
|
0xf7,0xb7,0x84,0xab,0xd3,0x6a,0xe8,0x1b,0xdb,0x86,0x7e,0xe9,0xd9,
|
||||||
|
0x95,0xe6,0x7c,0x5f,0x7c,0x6b,0x3a,0x36,0xb9,0x3f,0x1b,0x9f,0xaf,
|
||||||
|
0x2b,0xc7,0x86,0x31,0xf1,0xea,0x70,0x61,0xed,0x5f,0xc2,0xc1,0xf1,
|
||||||
|
0xbc,0xe4,0xd0,0x38,0xa2,0xda,0x88,0x3f,0xc9,0x6f,0xef,0x9e,0x7c,
|
||||||
|
0xf6,0x4e,0xcc,0xe7,0xdf,0x98,0x24,0x4d,0x0f,0xad,0xee,0x5a,0xeb,
|
||||||
|
0x13,0x7a,0xd5,0xe6,0x84,0x2b,0xd3,0xe1,0xe1,0x87,0xe9,0x15,0x61,
|
||||||
|
0xef,0xd8,0x14,0xba,0xc7,0x46,0x72,0x4f,0xbc,0x29,0xdc,0x16,0x47,
|
||||||
|
0xe5,0x7b,0xee,0x01,0xc9,0xca,0xfc,0xbe,0x3f,0x3e,0xf2,0x63,0xe5,
|
||||||
|
0xcd,0x67,0xda,0xc6,0xf9,0xb7,0x63,0xf3,0x5b,0xe5,0xdb,0xaf,0xfc,
|
||||||
|
0xf8,0xa6,0x7f,0xfb,0xc4,0x55,0xf5,0xd2,0xa0,0x6b,0xff,0xf0,0x39,
|
||||||
|
0xb8,0x96,0xef,0x4a,0xd8,0xd2,0xcf,0x3b,0xb0,0xe5,0xcd,0xcc,0x7a,
|
||||||
|
0x97,0xbf,0x1e,0xbf,0x1e,0xf6,0xab,0x1d,0x18,0xba,0xc5,0xa3,0xab,
|
||||||
|
0xdd,0x6b,0xdf,0x0d,0xc7,0xd5,0xbe,0x53,0x3d,0xa8,0xf6,0x95,0xea,
|
||||||
|
0xbf,0xc4,0x1f,0x24,0xc3,0xd3,0x4e,0xc9,0x81,0xb5,0x8e,0x61,0xdf,
|
||||||
|
0xda,0x7e,0xe1,0x5f,0xe2,0xb7,0xf3,0x3d,0x6e,0xb7,0xca,0x81,0xb5,
|
||||||
|
0x7d,0xaa,0xfb,0xd6,0xf6,0x0d,0x7b,0xd6,0xbe,0x1e,0xee,0xad,0x2f,
|
||||||
|
0x28,0xfe,0x20,0xdd,0x23,0x69,0x5f,0x3b,0x24,0x1c,0x19,0x8f,0xaa,
|
||||||
|
0x1e,0x11,0x3b,0x57,0xf7,0xa9,0xed,0x9e,0x5f,0xf6,0x9b,0xe1,0xa7,
|
||||||
|
0xd9,0xa0,0x72,0xfb,0xb8,0x6f,0xb5,0x43,0xed,0xc0,0x6a,0xb7,0xd8,
|
||||||
|
0xb5,0xda,0x35,0x76,0xc9,0xaf,0xf7,0x6b,0xd5,0x2f,0xc5,0x2e,0xe1,
|
||||||
|
0xea,0xec,0x9a,0xf2,0x37,0xe3,0xee,0xe1,0x6b,0xb5,0x4e,0xd5,0x23,
|
||||||
|
0x63,0x53,0xf5,0x84,0x78,0x42,0xe8,0x11,0x0f,0xc8,0xf7,0xdb,0x1d,
|
||||||
|
0xc3,0xb0,0x2c,0xa9,0x74,0xae,0x75,0xa9,0xb6,0xaf,0xed,0x13,0x3a,
|
||||||
|
0xe4,0xb7,0xb1,0x7b,0xfa,0xa3,0x4a,0x21,0xb6,0x4f,0x3a,0xd5,0xf6,
|
||||||
|
0xab,0x76,0xac,0x75,0xac,0x7e,0x25,0x0e,0x69,0x9d,0x7f,0x2d,0x6b,
|
||||||
|
0xbc,0x4f,0x3c,0xb1,0xcb,0xe0,0x96,0xe3,0xfa,0x3e,0x7e,0xf9,0x86,
|
||||||
|
0xf7,0x3f,0x5a,0x8f,0xf1,0x5b,0x5b,0xee,0xb2,0xf1,0xff,0xfe,0x58,
|
||||||
|
0xfc,0xe9,0x01,0x7d,0xeb,0x6b,0x4b,0x2d,0x97,0xdd,0x69,0x7e,0x9b,
|
||||||
|
0x41,0x2d,0xa7,0xbb,0xa4,0xb7,0x57,0xb6,0xf4,0xf3,0x0e,0x6c,0x79,
|
||||||
|
0x8b,0xea,0xa3,0x8a,0x49,0x76,0x7e,0xe5,0xbb,0xe9,0x09,0x49,0x8f,
|
||||||
|
0x78,0x4c,0x72,0x74,0x3c,0x3c,0x39,0x2c,0x76,0x49,0x7a,0xc5,0xd3,
|
||||||
|
0x2a,0x83,0xb3,0xbb,0xca,0xa3,0xb3,0xf3,0xcb,0xdf,0x4f,0xcf,0xab,
|
||||||
|
0x9c,0x9a,0xf6,0x4a,0x8e,0x49,0x07,0x55,0x66,0x64,0x23,0x4a,0x17,
|
||||||
|
0xa7,0x83,0x2b,0x03,0xd3,0xb3,0x2a,0x7d,0xf3,0xd3,0x4f,0x35,0x56,
|
||||||
|
0x14,0xa6,0x64,0xc5,0xf2,0xf1,0xf1,0xa8,0xa4,0x73,0x3c,0x28,0x74,
|
||||||
|
0x8e,0x47,0x87,0xde,0xf1,0xfc,0x4a,0x23,0xbb,0xb9,0xfc,0x68,0x76,
|
||||||
|
0x5d,0xe9,0xbc,0xf4,0xf4,0xfc,0x6f,0x4f,0xad,0xf4,0x8e,0xdd,0x93,
|
||||||
|
0x23,0xd3,0x63,0x92,0xde,0x69,0xcf,0xe4,0xdc,0xf4,0xb2,0xf2,0xfd,
|
||||||
|
0xf5,0xdb,0x4b,0xf5,0xac,0x54,0xfe,0x5e,0x7a,0x5c,0xf2,0xed,0x78,
|
||||||
|
0x50,0xd2,0x29,0x7e,0x2b,0xff,0xdb,0xee,0xc9,0x59,0xf9,0x7a,0x72,
|
||||||
|
0x5e,0xfd,0xe6,0xd2,0xd9,0xe9,0xf7,0x2b,0x7d,0xb3,0x61,0x95,0x62,
|
||||||
|
0x36,0xb4,0x92,0xd5,0x67,0x97,0xc6,0x64,0x17,0x94,0xfb,0xa7,0x03,
|
||||||
|
0x2a,0xa7,0xa5,0x4d,0x95,0xde,0xf9,0x3c,0x7c,0xb7,0x79,0x79,0x61,
|
||||||
|
0x79,0xf3,0xaa,0x42,0x16,0x77,0xad,0xec,0x50,0xeb,0x50,0xfd,0x71,
|
||||||
|
0xf3,0x8e,0x95,0x3f,0x1c,0xfb,0xb7,0xb6,0xb8,0xc3,0xf4,0xb6,0x43,
|
||||||
|
0x37,0x7e,0x27,0xfe,0xa2,0xc6,0xfa,0xc7,0x3a,0x28,0x7e,0x26,0xd9,
|
||||||
|
0x21,0xf6,0x0d,0x1b,0x4f,0x03,0x1f,0x6d,0xef,0x36,0xbf,0x5d,0x78,
|
||||||
|
0xa5,0xf1,0x4c,0xf1,0xc9,0xc6,0x93,0xc5,0x99,0x8d,0x27,0x72,0x0f,
|
||||||
|
0x95,0xa6,0xd5,0x1f,0x2a,0x3d,0xd1,0x98,0x57,0x7c,0xb6,0xf1,0x72,
|
||||||
|
0x71,0x61,0x63,0x76,0xf1,0xf1,0xfc,0xf7,0x59,0xf5,0x07,0x4a,0x53,
|
||||||
|
0xea,0x8f,0x97,0xde,0x6e,0xbc,0x5c,0x58,0xd8,0x78,0x21,0x3f,0xff,
|
||||||
|
0xd1,0xfc,0x6f,0x16,0x14,0x97,0x36,0xaf,0x2e,0x2c,0x6d,0x2c,0x2c,
|
||||||
|
0xcc,0xaa,0x3f,0x58,0x9a,0xdc,0x98,0x54,0x9a,0x98,0xff,0x9c,0xd9,
|
||||||
|
0x78,0xb6,0xb8,0xb8,0x79,0x69,0xe1,0xcd,0xc6,0xc2,0xe2,0xbc,0xc6,
|
||||||
|
0xe3,0xb9,0x79,0xc5,0xc7,0x1a,0x0f,0x97,0x1e,0xaa,0x3f,0x5c,0x9a,
|
||||||
|
0xd1,0x78,0xa4,0x34,0x37,0xff,0xf7,0xf9,0xf9,0xed,0x3d,0x93,0x5f,
|
||||||
|
0xff,0xbc,0xc6,0xcc,0xe2,0x03,0xf5,0x49,0xa5,0x71,0x8d,0xfb,0x4a,
|
||||||
|
0x93,0x1a,0xd3,0x4b,0xf3,0x1a,0xaf,0x17,0x57,0x36,0x9e,0x2f,0x3c,
|
||||||
|
0x91,0xff,0xdd,0xec,0xc6,0x2b,0xc5,0x57,0xf3,0xcb,0xbc,0xd6,0xbc,
|
||||||
|
0xac,0xf8,0x72,0xe3,0xe9,0xfc,0xf2,0xcf,0xe5,0xf7,0xe3,0xa1,0xd2,
|
||||||
|
0x43,0xf9,0xfd,0xfd,0x65,0xf3,0xbb,0xb9,0x95,0x85,0x49,0x59,0x53,
|
||||||
|
0x79,0xe7,0x45,0x9f,0x1d,0xd8,0xe5,0x9a,0x9d,0xca,0x1b,0xbf,0x07,
|
||||||
|
0x75,0x61,0x7e,0xbb,0xad,0x9f,0x8d,0x6b,0xf9,0x4e,0xfc,0x91,0x3f,
|
||||||
|
0xb6,0xd6,0x03,0xfe,0xbf,0xd6,0xfc,0x8f,0xff,0xfe,0x7e,0x61,0x55,
|
||||||
|
0xf3,0x9a,0xd6,0xcb,0xac,0x69,0xfd,0x3f,0x81,0xdf,0xff,0xc0,0xbf,
|
||||||
|
0xad,0x3f,0x7f,0xcd,0x1f,0x5d,0xdf,0x9a,0xcd,0x7e,0x5f,0xfd,0xdf,
|
||||||
|
0x5e,0xef,0xf2,0x7c,0xa6,0xad,0xde,0xec,0xbc,0xd5,0x1f,0xb8,0x9e,
|
||||||
|
0xd5,0xff,0xcf,0xf5,0xae,0xde,0xec,0x3a,0x57,0xb7,0x6a,0xb9,0x3f,
|
||||||
|
0x6b,0x0a,0x4d,0x77,0xaf,0xff,0x0e,0x98,0x9d,0xe7,0x7e,0x7a,0xd0,
|
||||||
|
0xa6,0xd7,0xf6,0x1a,0x33,0xd6,0x1f,0x1b,0xb3,0x70,0xa7,0x4b,0x06,
|
||||||
|
0xb5,0xec,0x7d,0xb7,0x82,0xe7,0x19,0xe0,0xaf,0x6a,0xe3,0x9c,0xdb,
|
||||||
|
0xec,0xd8,0x97,0x4f,0x5c,0x7d,0x7b,0x69,0x6d,0xe3,0xad,0x42,0xcb,
|
||||||
|
0xfb,0xbd,0x3b,0x5d,0xfb,0xfd,0xf2,0x16,0xbf,0x8f,0x00,0x7f,0x23,
|
||||||
|
0x1f,0xf8,0x7c,0x47,0xeb,0xf7,0xc0,0xac,0x5f,0xef,0xb5,0xbc,0xd6,
|
||||||
|
0x67,0xed,0x07,0x6c,0xcf,0x7e,0x9c,0x76,0xa8,0xb4,0x7e,0xee,0x77,
|
||||||
|
0xed,0x2e,0x17,0x7d,0xf2,0x86,0xb3,0x4a,0x8f,0x3b,0xae,0x0f,0xd8,
|
||||||
|
0x60,0x4d,0xeb,0xeb,0x77,0xdb,0xb1,0xc6,0xdb,0x85,0xef,0xc7,0x1d,
|
||||||
|
0xc2,0x0e,0xb5,0x2f,0x55,0x63,0x7d,0x4d,0x69,0x8b,0xdf,0x1f,0x80,
|
||||||
|
0xbf,0xbb,0xf7,0x0b,0x2b,0xb6,0xf8,0x7d,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xc3,0x5a,0xbd,0xe9,
|
||||||
|
0xfb,0xf2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x60,0xab,0x32,0x0c,0x00,0x00,0x00,0xb6,0x77,0xef,0x37,
|
||||||
|
0xbf,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb6,
|
||||||
|
0x31,0xc3,0xdf,0x1f,0x06,0x00,0x00,0x00,0xdb,0xbd,0x66,0x00,0x00,
|
||||||
|
0x00,0xd8,0xfe,0xad,0x6a,0x5e,0x55,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0xd8,0xae,0x0c,0x5f,0x35,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0xd8,0xb6,0xac,0x1c,0xbe,0xb2,0x00,0x00,0xc0,0x47,0xca,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0xd8,0xda,0xac,0x18,0xbe,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x8b,0x7a,0x6f,
|
||||||
|
0xf8,0x7b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0xc0,0x56,0x62,0xf9,0xf0,0xe5,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x56,0x62,
|
||||||
|
0xd9,0x88,0x65,0x00,0x1f,0x4d,0xc3,0x01,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x80,0x6d,0xd0,0x50,0x00,0x00,0x00,0xd8,0xde,0xfd,
|
||||||
|
0x72,0xc4,0x2f,0x87,0x01,0x00,0x00,0x00,0x00,0x00,0x6c,0x57,0x86,
|
||||||
|
0x03,0x7c,0x64,0x0d,0x05,0x00,0x00,0x00,0x00,0x00,0xd8,0x9e,0xbc,
|
||||||
|
0x3b,0xe2,0xdd,0x61,0x00,0x00,0x00,0x00,0xc0,0x76,0x6b,0x28,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0xc0,0x76,0x65,0x38,0x00,0x00,0x00,0x6c,0xff,
|
||||||
|
0xde,0x19,0xf1,0xce,0x30,0x80,0x8f,0xa8,0xa1,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdb,0x82,0xa5,0x23,0x96,0x02,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,0x13,0xde,
|
||||||
|
0x1e,0xf1,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,
|
||||||
|
0x8d,0x59,0x32,0x62,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0xc0,0x36,0xe1,0xad,0x4b,0xdf,0x02,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x60,0x7b,0x30,0x02,0x00,0x00,0x00,0xb6,0x7f,0x6f,0x5e,
|
||||||
|
0xfa,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
|
||||||
|
0xb6,0x62,0x08,0x00,0x00,0x00,0x6c,0xef,0xde,0xb8,0xf4,0x8d,0xa1,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xdb,0x99,0x21,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdb,0x82,0xd7,0x2f,0x7d,0x1d,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x9b,0xf0,
|
||||||
|
0x8b,0x4b,0x7f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0xc0,0x56,0x6c,0xf1,0xa5,0x8b,0x01,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x80,0x6d,0xcf,0x60,0x00,0x00,0x00,0x00,0x60,
|
||||||
|
0xfb,0xf4,0xf3,0x91,0x3f,0x1f,0x02,0xf0,0x91,0x74,0x29,0x00,0x00,
|
||||||
|
0x00,0x00,0xb0,0x1d,0x1b,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0xdb,0xaa,0xd7,0x46,0xbe,0x36,0x04,0x00,0x80,0x8f,0x94,0xc1,
|
||||||
|
0x00,0x00,0x00,0xb0,0xdd,0xbb,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0xb6,0x5d,0xaf,0x8e,0x7c,0x15,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x4a,0xbc,0x32,
|
||||||
|
0xf2,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x80,0x2d,0xea,0xe5,0x91,0x2f,0x03,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x6c,0x51,0x2f,0x8d,0x7c,0x09,0x00,0x80,0x8f,0x92,0xcb,0x00,0x00,
|
||||||
|
0x00,0x00,0x80,0xed,0xd6,0x96,0x7e,0xfd,0x11,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0xfe,0x32,0x83,0x00,0x3e,0x8a,0x5e,0xbc,0xec,
|
||||||
|
0xc5,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x6c,0xd5,0x06,0x01,0x7c,0x24,0x8d,0x04,0x00,0x00,0x00,0x00,
|
||||||
|
0xb6,0x57,0x8b,0x2e,0x5b,0x34,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x80,0xed,0xc2,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0xb6,0x5e,0x2f,0x5c,0xf6,0xc2,0x60,0x00,0x00,0x00,
|
||||||
|
0xf8,0x08,0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x25,0x3d,0x7f,0xd9,0xf3,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0xf0,0x77,0xf3,0xdc,0x65,0xcf,0x01,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x7f,0x63,0x0b,0x2f,0x5b,0x08,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xb1,0x1d,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
|
||||||
|
0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
|
||||||
|
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
|
||||||
|
0x92,0x24,0x49,0x92,0x24,0x49,0x7f,0x97,0xfe,0x2f,0x91,0x73,0x60,
|
||||||
|
0x14,0x14
|
||||||
|
};
|
||||||
|
|
@ -500,7 +500,8 @@ SaveSRAMToMC (int slot, int silent)
|
|||||||
int datasize;
|
int datasize;
|
||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
ShowAction ((char*) "Saving SRAM to MC...");
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving SRAM to MC...");
|
||||||
|
|
||||||
/*** Build SRAM filename ***/
|
/*** Build SRAM filename ***/
|
||||||
sprintf (filename, "%s.srm", Memory.ROMName);
|
sprintf (filename, "%s.srm", Memory.ROMName);
|
||||||
@ -551,7 +552,8 @@ SavePrefsToMC (int slot, int silent)
|
|||||||
int offset;
|
int offset;
|
||||||
char msg[80];
|
char msg[80];
|
||||||
|
|
||||||
ShowAction ((char*) "Saving Prefs to MC...");
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving Prefs to MC...");
|
||||||
|
|
||||||
datasize = preparePrefsData ();
|
datasize = preparePrefsData ();
|
||||||
offset = SaveBufferToMC (savebuffer, slot, PREFS_FILE_NAME, datasize, silent);
|
offset = SaveBufferToMC (savebuffer, slot, PREFS_FILE_NAME, datasize, silent);
|
||||||
|
@ -47,9 +47,7 @@ extern unsigned char savebuffer[];
|
|||||||
static int bufoffset;
|
static int bufoffset;
|
||||||
static char membuffer[MEMBUFFER];
|
static char membuffer[MEMBUFFER];
|
||||||
|
|
||||||
char freezecomment[2][32] = { {"Snes9x GX 2.0.1b8 Freeze"}, {"Freeze"} };
|
char freezecomment[2][32] = { {"Snes9x GX 003 Freeze"}, {"Freeze"} };
|
||||||
|
|
||||||
extern char rootSDdir[MAXPATHLEN];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -153,10 +151,10 @@ NGCFreezeGame (int where, bool8 silent)
|
|||||||
/*** Freeze to SDCard in slot A or slot B ***/
|
/*** Freeze to SDCard in slot A or slot B ***/
|
||||||
|
|
||||||
#ifdef SDUSE_LFN
|
#ifdef SDUSE_LFN
|
||||||
sprintf (filename, "%s/%s/%s.frz", rootSDdir, SNESSAVEDIR, Memory.ROMName);
|
sprintf (filename, "%s/%s/%s.frz", ROOTSDDIR, SNESSAVEDIR, Memory.ROMName);
|
||||||
#else
|
#else
|
||||||
/*** Until we have LFN on SD ... ***/
|
/*** Until we have LFN on SD ... ***/
|
||||||
sprintf (filename, "%s/%s/%08x.frz", rootSDdir, SNESSAVEDIR, Memory.ROMCRC32);
|
sprintf (filename, "%s/%s/%08x.frz", ROOTSDDIR, SNESSAVEDIR, Memory.ROMCRC32);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -182,7 +180,8 @@ NGCFreezeGame (int where, bool8 silent)
|
|||||||
|
|
||||||
if (smbfile)
|
if (smbfile)
|
||||||
{
|
{
|
||||||
ShowAction ((char*) "Saving freeze game...");
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving freeze game...");
|
||||||
|
|
||||||
len = bufoffset;
|
len = bufoffset;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
@ -222,7 +221,8 @@ NGCFreezeGame (int where, bool8 silent)
|
|||||||
|
|
||||||
if (handle > 0)
|
if (handle > 0)
|
||||||
{
|
{
|
||||||
ShowAction ((char*) "Saving freeze game...");
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving freeze game...");
|
||||||
|
|
||||||
len = fwrite (membuffer, 1, bufoffset, handle);
|
len = fwrite (membuffer, 1, bufoffset, handle);
|
||||||
fclose (handle);
|
fclose (handle);
|
||||||
@ -238,13 +238,14 @@ NGCFreezeGame (int where, bool8 silent)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf(msg, "Couldn't save to %s/%s/", rootSDdir, SNESSAVEDIR);
|
sprintf(msg, "Couldn't save to %s/%s/", ROOTSDDIR, SNESSAVEDIR);
|
||||||
WaitPrompt (msg);
|
WaitPrompt (msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /*** MC in slot A or slot B ***/
|
else /*** MC in slot A or slot B ***/
|
||||||
{
|
{
|
||||||
ShowAction ((char*) "Saving freeze game...");
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving freeze game...");
|
||||||
|
|
||||||
ClearSaveBuffer ();
|
ClearSaveBuffer ();
|
||||||
|
|
||||||
@ -378,10 +379,10 @@ NGCUnfreezeGame (int from, bool8 silent)
|
|||||||
{
|
{
|
||||||
|
|
||||||
#ifdef SDUSE_LFN
|
#ifdef SDUSE_LFN
|
||||||
sprintf (filename, "%s/%s/%s.frz", rootSDdir, SNESSAVEDIR, Memory.ROMName);
|
sprintf (filename, "%s/%s/%s.frz", ROOTSDDIR, SNESSAVEDIR, Memory.ROMName);
|
||||||
#else
|
#else
|
||||||
/*** From SDCard ***/
|
/*** From SDCard ***/
|
||||||
sprintf (filename, "%s/%s/%08x.frz", rootSDdir, SNESSAVEDIR, Memory.ROMCRC32);
|
sprintf (filename, "%s/%s/%08x.frz", ROOTSDDIR, SNESSAVEDIR, Memory.ROMCRC32);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
handle = fopen (filename, "rb");
|
handle = fopen (filename, "rb");
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "video.h"
|
#include "video.h"
|
||||||
#include "mcsave.h"
|
#include "mcsave.h"
|
||||||
#include "filesel.h"
|
#include "filesel.h"
|
||||||
#include "ngcunzip.h"
|
#include "unzip.h"
|
||||||
#include "smbload.h"
|
#include "smbload.h"
|
||||||
#include "mcsave.h"
|
#include "mcsave.h"
|
||||||
#include "sdload.h"
|
#include "sdload.h"
|
||||||
@ -43,7 +43,7 @@
|
|||||||
#include "button_mapping.h"
|
#include "button_mapping.h"
|
||||||
#include "ftfont.h"
|
#include "ftfont.h"
|
||||||
|
|
||||||
extern void DrawMenu (char items[][20], char *title, int maxitems, int selected);
|
extern void DrawMenu (char items[][20], char *title, int maxitems, int selected, int fontsize);
|
||||||
|
|
||||||
#define PSOSDLOADID 0x7c6000a6
|
#define PSOSDLOADID 0x7c6000a6
|
||||||
extern int menu;
|
extern int menu;
|
||||||
@ -181,7 +181,7 @@ LoadManager ()
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
/*** Load from SD ***/
|
/*** Load from SD ***/
|
||||||
quit = OpenSD (0);
|
quit = OpenSD ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
@ -208,14 +208,14 @@ LoadManager ()
|
|||||||
if ( retval == 1 ) // if ROM was loaded, load the SRAM & settings
|
if ( retval == 1 ) // if ROM was loaded, load the SRAM & settings
|
||||||
{
|
{
|
||||||
if ( GCSettings.AutoLoad == 1 )
|
if ( GCSettings.AutoLoad == 1 )
|
||||||
|
{
|
||||||
quickLoadSRAM ( SILENT );
|
quickLoadSRAM ( SILENT );
|
||||||
|
S9xSoftReset(); // reset after loading sram
|
||||||
|
}
|
||||||
else if ( GCSettings.AutoLoad == 2 )
|
else if ( GCSettings.AutoLoad == 2 )
|
||||||
{
|
{
|
||||||
/*** load SRAM first in order to get joypad config ***/
|
|
||||||
quickLoadSRAM ( SILENT );
|
|
||||||
quickLoadFreeze ( SILENT );
|
quickLoadFreeze ( SILENT );
|
||||||
}
|
}
|
||||||
S9xSoftReset(); // reset after loading sram
|
|
||||||
}
|
}
|
||||||
|
|
||||||
menu = oldmenu;
|
menu = oldmenu;
|
||||||
@ -250,23 +250,23 @@ SaveManager ()
|
|||||||
{
|
{
|
||||||
if ( isWii ) /* Wii menu */
|
if ( isWii ) /* Wii menu */
|
||||||
{
|
{
|
||||||
ret = RunMenu (savemenuwii, savecountwii, (char*)"Save Manager");
|
ret = RunMenu (savemenuwii, savecountwii, (char*)"SRAM Manager");
|
||||||
if (ret >= savecountwii-1)
|
if (ret >= savecountwii-1)
|
||||||
ret = savecount-1;
|
ret = savecount-1;
|
||||||
}
|
}
|
||||||
else /* Gamecube menu */
|
else /* Gamecube menu */
|
||||||
ret = RunMenu (savemenu, savecount, (char*)"Save Manager");
|
ret = RunMenu (savemenu, savecount, (char*)"SRAM Manager");
|
||||||
|
|
||||||
switch (ret)
|
switch (ret)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
/*** Save to SD***/
|
/*** Save to SD***/
|
||||||
SaveSRAMToSD (0, NOTSILENT);
|
SaveSRAMToSD (NOTSILENT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
/*** Load from SD***/
|
/*** Load from SD***/
|
||||||
LoadSRAMFromSD (0, NOTSILENT);
|
LoadSRAMFromSD (NOTSILENT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
@ -448,6 +448,7 @@ GetInput (u16 ctrlr_type)
|
|||||||
{
|
{
|
||||||
u32 exp_type, pressed;
|
u32 exp_type, pressed;
|
||||||
pressed=0;
|
pressed=0;
|
||||||
|
s8 gc_px = 0;
|
||||||
|
|
||||||
while( PAD_ButtonsHeld(0)
|
while( PAD_ButtonsHeld(0)
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
@ -459,13 +460,14 @@ GetInput (u16 ctrlr_type)
|
|||||||
{
|
{
|
||||||
VIDEO_WaitVSync();
|
VIDEO_WaitVSync();
|
||||||
// get input based on controller type
|
// get input based on controller type
|
||||||
//if (ctrlr_type == CTRLR_GCPAD)
|
if (ctrlr_type == CTRLR_GCPAD)
|
||||||
//{
|
{
|
||||||
pressed = PAD_ButtonsHeld (0);
|
pressed = PAD_ButtonsHeld (0);
|
||||||
//}
|
gc_px = PAD_SubStickX (0);
|
||||||
|
}
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
//else
|
else
|
||||||
//{
|
{
|
||||||
// if ( WPAD_Probe( 0, &exp_type) == 0) // check wiimote and expansion status (first if wiimote is connected & no errors)
|
// if ( WPAD_Probe( 0, &exp_type) == 0) // check wiimote and expansion status (first if wiimote is connected & no errors)
|
||||||
// {
|
// {
|
||||||
pressed = WPAD_ButtonsHeld (0);
|
pressed = WPAD_ButtonsHeld (0);
|
||||||
@ -473,8 +475,11 @@ GetInput (u16 ctrlr_type)
|
|||||||
// if (ctrlr_type != CTRLR_WIIMOTE && exp_type != ctrlr_type+1) // if we need input from an expansion, and its not connected...
|
// if (ctrlr_type != CTRLR_WIIMOTE && exp_type != ctrlr_type+1) // if we need input from an expansion, and its not connected...
|
||||||
// pressed = 0;
|
// pressed = 0;
|
||||||
// }
|
// }
|
||||||
//}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
/*** check for exit sequence (c-stick left OR home button) ***/
|
||||||
|
if ( (gc_px < -70) || (pressed & WPAD_BUTTON_HOME) || (pressed & WPAD_CLASSIC_BUTTON_HOME) )
|
||||||
|
return 0;
|
||||||
} // end while
|
} // end while
|
||||||
while( pressed == (PAD_ButtonsHeld(0)
|
while( pressed == (PAD_ButtonsHeld(0)
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
@ -485,19 +490,23 @@ GetInput (u16 ctrlr_type)
|
|||||||
return pressed;
|
return pressed;
|
||||||
} // end GetInput()
|
} // end GetInput()
|
||||||
|
|
||||||
int cfg_text_count = 4;
|
int cfg_text_count = 7;
|
||||||
char cfg_text[][20] = {
|
char cfg_text[][20] = {
|
||||||
" ",
|
"Remapping ",
|
||||||
"Press Any Button",
|
"Press Any Button",
|
||||||
"on the",
|
"on the",
|
||||||
" " // identify controller
|
" ", // identify controller
|
||||||
|
" ",
|
||||||
|
"Press C-Left or",
|
||||||
|
"Home to exit"
|
||||||
};
|
};
|
||||||
|
|
||||||
u32
|
u32
|
||||||
GetButtonMap(u16 ctrlr_type, char* btn_name)
|
GetButtonMap(u16 ctrlr_type, char* btn_name)
|
||||||
{
|
{
|
||||||
u32 pressed, previous;
|
u32 pressed, previous;
|
||||||
char title[20];
|
char temp[20] = "";
|
||||||
|
int k;
|
||||||
pressed = 0; previous = 1;
|
pressed = 0; previous = 1;
|
||||||
|
|
||||||
switch (ctrlr_type) {
|
switch (ctrlr_type) {
|
||||||
@ -515,9 +524,13 @@ GetButtonMap(u16 ctrlr_type, char* btn_name)
|
|||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
sprintf (cfg_text[0], "Remapping %s", btn_name); // note which button we are remapping
|
/*** note which button we are remapping ***/
|
||||||
|
sprintf (temp, (char*)"Remapping ");
|
||||||
|
for (k=0; k<9-strlen(btn_name) ;k++) strcat(temp, " "); // add whitespace padding to align text
|
||||||
|
strncat (temp, btn_name, 9); // snes button we are remapping
|
||||||
|
strncpy (cfg_text[0], temp, 19); // copy this all back to the text we wish to display
|
||||||
|
|
||||||
DrawMenu(&cfg_text[0], title, cfg_text_count, 1); // display text
|
DrawMenu(&cfg_text[0], NULL, cfg_text_count, 1); // display text
|
||||||
|
|
||||||
// while (previous != pressed && pressed == 0); // get two consecutive button presses (which are the same)
|
// while (previous != pressed && pressed == 0); // get two consecutive button presses (which are the same)
|
||||||
// {
|
// {
|
||||||
@ -562,7 +575,7 @@ ConfigureButtons (u16 ctrlr_type)
|
|||||||
|
|
||||||
unsigned int* currentpadmap;
|
unsigned int* currentpadmap;
|
||||||
char temp[20] = "";
|
char temp[20] = "";
|
||||||
int i, j;
|
int i, j, k;
|
||||||
|
|
||||||
/*** Update Menu Title (based on controller we're configuring) ***/
|
/*** Update Menu Title (based on controller we're configuring) ***/
|
||||||
switch (ctrlr_type) {
|
switch (ctrlr_type) {
|
||||||
@ -591,21 +604,24 @@ ConfigureButtons (u16 ctrlr_type)
|
|||||||
{
|
{
|
||||||
// get current padmap button name to display
|
// get current padmap button name to display
|
||||||
for ( j=0;
|
for ( j=0;
|
||||||
|
j < ctrlr_def[ctrlr_type].num_btns &&
|
||||||
currentpadmap[i] != ctrlr_def[ctrlr_type].map[j].btn // match padmap button press with button names
|
currentpadmap[i] != ctrlr_def[ctrlr_type].map[j].btn // match padmap button press with button names
|
||||||
&& j < ctrlr_def[ctrlr_type].num_btns
|
|
||||||
; j++ );
|
; j++ );
|
||||||
|
|
||||||
memset (temp, 0, sizeof(temp));
|
memset (temp, 0, sizeof(temp));
|
||||||
strncpy (temp, cfg_btns_menu[i], 12); // copy snes button information
|
strncpy (temp, cfg_btns_menu[i], 12); // copy snes button information
|
||||||
if (currentpadmap[i] == ctrlr_def[ctrlr_type].map[j].btn) // check if a match was made
|
if (currentpadmap[i] == ctrlr_def[ctrlr_type].map[j].btn) // check if a match was made
|
||||||
|
{
|
||||||
|
for (k=0; k<7-strlen(ctrlr_def[ctrlr_type].map[j].name) ;k++) strcat(temp, " "); // add whitespace padding to align text
|
||||||
strncat (temp, ctrlr_def[ctrlr_type].map[j].name, 6); // update button map display
|
strncat (temp, ctrlr_def[ctrlr_type].map[j].name, 6); // update button map display
|
||||||
|
}
|
||||||
else
|
else
|
||||||
strcat (temp, (char*)"---"); // otherwise, button is 'unmapped'
|
strcat (temp, (char*)"---"); // otherwise, button is 'unmapped'
|
||||||
strncpy (cfg_btns_menu[i], temp, 19); // move back updated information
|
strncpy (cfg_btns_menu[i], temp, 19); // move back updated information
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = RunMenu (cfg_btns_menu, cfg_btns_count, menu_title);
|
ret = RunMenu (cfg_btns_menu, cfg_btns_count, menu_title, 18);
|
||||||
|
|
||||||
switch (ret)
|
switch (ret)
|
||||||
{
|
{
|
||||||
@ -627,7 +643,8 @@ ConfigureButtons (u16 ctrlr_type)
|
|||||||
strncpy(temp, cfg_btns_menu[ret], 6); // get the name of the snes button we're changing
|
strncpy(temp, cfg_btns_menu[ret], 6); // get the name of the snes button we're changing
|
||||||
pressed = GetButtonMap(ctrlr_type, temp); // get a button selection from user
|
pressed = GetButtonMap(ctrlr_type, temp); // get a button selection from user
|
||||||
// FIX: check if input is valid for this controller
|
// FIX: check if input is valid for this controller
|
||||||
currentpadmap[ret] = pressed; // update mapping
|
if (pressed != 0) // check if a the button was configured, or if the user exited.
|
||||||
|
currentpadmap[ret] = pressed; // update mapping
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case -1: /*** Button B ***/
|
case -1: /*** Button B ***/
|
||||||
|
@ -31,7 +31,7 @@ extern unsigned int wmpadmap[];
|
|||||||
extern unsigned int ccpadmap[];
|
extern unsigned int ccpadmap[];
|
||||||
extern unsigned int ncpadmap[];
|
extern unsigned int ncpadmap[];
|
||||||
|
|
||||||
#define PREFSVERSTRING "Snes9x GX 002 Prefs"
|
#define PREFSVERSTRING "Snes9x GX 003 Prefs"
|
||||||
|
|
||||||
char prefscomment[2][32] = { {PREFSVERSTRING}, {"Preferences"} };
|
char prefscomment[2][32] = { {PREFSVERSTRING}, {"Preferences"} };
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ void quickLoadPrefs (bool8 silent)
|
|||||||
|
|
||||||
case CARD_SLOTA+2:
|
case CARD_SLOTA+2:
|
||||||
case CARD_SLOTB+2:
|
case CARD_SLOTB+2:
|
||||||
LoadPrefsFromSD(QUICK_SAVE_SLOT-2, silent);
|
LoadPrefsFromSD(silent);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CARD_SLOTA+4:
|
case CARD_SLOTA+4:
|
||||||
@ -144,7 +144,7 @@ void quickSavePrefs (bool8 silent)
|
|||||||
break;
|
break;
|
||||||
case CARD_SLOTA+2:
|
case CARD_SLOTA+2:
|
||||||
case CARD_SLOTB+2:
|
case CARD_SLOTB+2:
|
||||||
SavePrefsToSD(QUICK_SAVE_SLOT-2, silent);
|
SavePrefsToSD(silent);
|
||||||
break;
|
break;
|
||||||
case CARD_SLOTA+4:
|
case CARD_SLOTA+4:
|
||||||
SavePrefsToSMB(silent);
|
SavePrefsToSMB(silent);
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ogcsys.h>
|
#include <ogcsys.h>
|
||||||
#include "sdload.h"
|
#include "sdload.h"
|
||||||
#include "ngcunzip.h"
|
#include "unzip.h"
|
||||||
#include "memmap.h"
|
#include "memmap.h"
|
||||||
#include "video.h"
|
#include "video.h"
|
||||||
#include "ftfont.h"
|
#include "ftfont.h"
|
||||||
@ -27,13 +27,40 @@
|
|||||||
extern unsigned char savebuffer[];
|
extern unsigned char savebuffer[];
|
||||||
extern char output[16384];
|
extern char output[16384];
|
||||||
FILE * filehandle;
|
FILE * filehandle;
|
||||||
char rootSDdir[MAXPATHLEN] = "fat:/";
|
|
||||||
char currSDdir[MAXPATHLEN];
|
char currSDdir[MAXPATHLEN];
|
||||||
extern int offset;
|
extern int offset;
|
||||||
extern int selection;
|
extern int selection;
|
||||||
|
|
||||||
extern FILEENTRIES filelist[MAXFILES];
|
extern FILEENTRIES filelist[MAXFILES];
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* FileSortCallback
|
||||||
|
*
|
||||||
|
* Quick sort callback to sort file entries with the following order:
|
||||||
|
* .
|
||||||
|
* ..
|
||||||
|
* <dirs>
|
||||||
|
* <files>
|
||||||
|
***************************************************************************/
|
||||||
|
static int FileSortCallback(const void *f1, const void *f2)
|
||||||
|
{
|
||||||
|
/* Special case for implicit directories */
|
||||||
|
if(((FILEENTRIES *)f1)->filename[0] == '.' || ((FILEENTRIES *)f2)->filename[0] == '.')
|
||||||
|
{
|
||||||
|
if(strcmp(((FILEENTRIES *)f1)->filename, ".") == 0) { return -1; }
|
||||||
|
if(strcmp(((FILEENTRIES *)f2)->filename, ".") == 0) { return 1; }
|
||||||
|
if(strcmp(((FILEENTRIES *)f1)->filename, "..") == 0) { return -1; }
|
||||||
|
if(strcmp(((FILEENTRIES *)f2)->filename, "..") == 0) { return 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If one is a file and one is a directory the directory is first. */
|
||||||
|
if(((FILEENTRIES *)f1)->flags == 1 && ((FILEENTRIES *)f2)->flags == 0) return -1;
|
||||||
|
if(((FILEENTRIES *)f1)->flags == 0 && ((FILEENTRIES *)f2)->flags == 1) return 1;
|
||||||
|
|
||||||
|
return stricmp(((FILEENTRIES *)f1)->filename, ((FILEENTRIES *)f2)->filename);
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Update SDCARD curent directory name
|
* Update SDCARD curent directory name
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@ -75,7 +102,7 @@ int updateSDdirname()
|
|||||||
/* handles root name */
|
/* handles root name */
|
||||||
sprintf(temp, "/%s/..", SNESROMDIR);
|
sprintf(temp, "/%s/..", SNESROMDIR);
|
||||||
if (strcmp(currSDdir, temp) == 0)
|
if (strcmp(currSDdir, temp) == 0)
|
||||||
sprintf(currSDdir,"%s",rootSDdir);
|
sprintf(currSDdir,"%s",ROOTSDDIR);
|
||||||
|
|
||||||
/* update current directory name */
|
/* update current directory name */
|
||||||
sprintf(currSDdir, "%s/%s",currSDdir, filelist[selection].filename);
|
sprintf(currSDdir, "%s/%s",currSDdir, filelist[selection].filename);
|
||||||
@ -103,7 +130,7 @@ int parseSDdirectory() {
|
|||||||
/* open the directory */
|
/* open the directory */
|
||||||
sddir = diropen(currSDdir);
|
sddir = diropen(currSDdir);
|
||||||
if (sddir == NULL) {
|
if (sddir == NULL) {
|
||||||
sprintf(currSDdir,"%s",rootSDdir); // if we can't open the previous dir, open root dir
|
sprintf(currSDdir,"%s",ROOTSDDIR); // if we can't open the previous dir, open root dir
|
||||||
sddir = diropen(currSDdir);
|
sddir = diropen(currSDdir);
|
||||||
WaitPrompt(msg);
|
WaitPrompt(msg);
|
||||||
if (sddir == NULL) {
|
if (sddir == NULL) {
|
||||||
@ -127,6 +154,9 @@ int parseSDdirectory() {
|
|||||||
|
|
||||||
/*** close directory ***/
|
/*** close directory ***/
|
||||||
dirclose(sddir);
|
dirclose(sddir);
|
||||||
|
|
||||||
|
/* Sort the file list */
|
||||||
|
qsort(filelist, nbfiles, sizeof(FILEENTRIES), FileSortCallback);
|
||||||
|
|
||||||
return nbfiles;
|
return nbfiles;
|
||||||
}
|
}
|
||||||
@ -141,14 +171,10 @@ LoadSDFile (char *filename, int length)
|
|||||||
char zipbuffer[2048];
|
char zipbuffer[2048];
|
||||||
char filepath[MAXPATHLEN];
|
char filepath[MAXPATHLEN];
|
||||||
FILE *handle;
|
FILE *handle;
|
||||||
char *rbuffer;
|
unsigned char *rbuffer;
|
||||||
PKZIPHEADER pkzip;
|
u32 size;
|
||||||
z_stream zs;
|
|
||||||
int res, outbytes = 0;
|
|
||||||
int size;
|
|
||||||
int have;
|
|
||||||
|
|
||||||
rbuffer = (char *) Memory.ROM;
|
rbuffer = (unsigned char *) Memory.ROM;
|
||||||
|
|
||||||
/* Check filename length */
|
/* Check filename length */
|
||||||
if ((strlen(currSDdir)+1+strlen(filelist[selection].filename)) < MAXPATHLEN)
|
if ((strlen(currSDdir)+1+strlen(filelist[selection].filename)) < MAXPATHLEN)
|
||||||
@ -167,67 +193,11 @@ LoadSDFile (char *filename, int length)
|
|||||||
|
|
||||||
if (IsZipFile (zipbuffer))
|
if (IsZipFile (zipbuffer))
|
||||||
{
|
{
|
||||||
/*** Unzip the ROM ***/
|
/*** Unzip the ROM ***/
|
||||||
memcpy (&pkzip, zipbuffer, sizeof (PKZIPHEADER));
|
size = UnZipBuffer (rbuffer, 0, 0, handle); // unzip from SD
|
||||||
pkzip.uncompressedSize = FLIP32 (pkzip.uncompressedSize);
|
|
||||||
memset (&zs, 0, sizeof (zs));
|
|
||||||
zs.zalloc = Z_NULL;
|
|
||||||
zs.zfree = Z_NULL;
|
|
||||||
zs.opaque = Z_NULL;
|
|
||||||
zs.avail_in = 0;
|
|
||||||
zs.next_in = Z_NULL;
|
|
||||||
|
|
||||||
res = inflateInit2 (&zs, -MAX_WBITS);
|
|
||||||
|
|
||||||
if (res != Z_OK)
|
|
||||||
{
|
|
||||||
fclose (handle);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
size = (sizeof (PKZIPHEADER) +
|
|
||||||
FLIP16 (pkzip.filenameLength) +
|
|
||||||
FLIP16 (pkzip.extraDataLength));
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
zs.avail_in = 2048 - size;
|
|
||||||
zs.next_in = (Bytef *) zipbuffer + size;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
zs.avail_out = 16384;
|
|
||||||
zs.next_out = (Bytef *) output;
|
|
||||||
|
|
||||||
res = inflate (&zs, Z_NO_FLUSH);
|
|
||||||
|
|
||||||
have = 16384 - zs.avail_out;
|
|
||||||
|
|
||||||
if (have)
|
|
||||||
{
|
|
||||||
memcpy (rbuffer + outbytes, output, have);
|
|
||||||
outbytes += have;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
while (zs.avail_out == 0);
|
|
||||||
|
|
||||||
sprintf (filepath, "Read %d bytes of %d", outbytes,
|
|
||||||
pkzip.uncompressedSize);
|
|
||||||
//ShowAction (filepath);
|
|
||||||
ShowProgress (filepath, outbytes, pkzip.uncompressedSize);
|
|
||||||
|
|
||||||
size = 0;
|
|
||||||
fread (zipbuffer, 1, 2048, handle);
|
|
||||||
|
|
||||||
}
|
|
||||||
while (res != Z_STREAM_END
|
|
||||||
&& (u32) outbytes < pkzip.uncompressedSize);
|
|
||||||
|
|
||||||
inflateEnd (&zs);
|
|
||||||
|
|
||||||
fclose (handle);
|
fclose (handle);
|
||||||
return pkzip.uncompressedSize;
|
return size;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -326,18 +296,19 @@ SaveBufferToSD (char *filepath, int datasize, bool silent)
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Save SRAM to SD Card
|
* Save SRAM to SD Card
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void SaveSRAMToSD (int slot, bool silent)
|
void SaveSRAMToSD (bool silent)
|
||||||
{
|
{
|
||||||
char filepath[1024];
|
char filepath[1024];
|
||||||
int datasize;
|
int datasize;
|
||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
ShowAction ((char*) "Saving SRAM to SD...");
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving SRAM to SD...");
|
||||||
|
|
||||||
#ifdef SDUSE_LFN
|
#ifdef SDUSE_LFN
|
||||||
sprintf (filepath, "%s/%s/%s.srm", rootSDdir, SNESSAVEDIR, Memory.ROMName);
|
sprintf (filepath, "%s/%s/%s.srm", ROOTSDDIR, SNESSAVEDIR, Memory.ROMName);
|
||||||
#else
|
#else
|
||||||
sprintf (filepath, "%s/SNESSAVE/%08x.srm", rootSDdir, Memory.ROMCRC32);
|
sprintf (filepath, "%s/%s/%08x.srm", ROOTSDDIR, SNESSAVEDIR, Memory.ROMCRC32);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
datasize = prepareEXPORTsavedata ();
|
datasize = prepareEXPORTsavedata ();
|
||||||
@ -359,7 +330,7 @@ void SaveSRAMToSD (int slot, bool silent)
|
|||||||
* Load SRAM From SD Card
|
* Load SRAM From SD Card
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void
|
void
|
||||||
LoadSRAMFromSD (int slot, bool silent)
|
LoadSRAMFromSD (bool silent)
|
||||||
{
|
{
|
||||||
char filepath[1024];
|
char filepath[1024];
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
@ -367,9 +338,9 @@ LoadSRAMFromSD (int slot, bool silent)
|
|||||||
ShowAction ((char*) "Loading SRAM from SD...");
|
ShowAction ((char*) "Loading SRAM from SD...");
|
||||||
|
|
||||||
#ifdef SDUSE_LFN
|
#ifdef SDUSE_LFN
|
||||||
sprintf (filepath, "%s/%s/%s.srm", rootSDdir, SNESSAVEDIR, Memory.ROMName);
|
sprintf (filepath, "%s/%s/%s.srm", ROOTSDDIR, SNESSAVEDIR, Memory.ROMName);
|
||||||
#else
|
#else
|
||||||
sprintf (filepath, "%s/%s/%08x.srm", rootSDdir, SNESSAVEDIR, Memory.ROMCRC32);
|
sprintf (filepath, "%s/%s/%08x.srm", ROOTSDDIR, SNESSAVEDIR, Memory.ROMCRC32);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
offset = LoadBufferFromSD (filepath, silent);
|
offset = LoadBufferFromSD (filepath, silent);
|
||||||
@ -391,18 +362,19 @@ LoadSRAMFromSD (int slot, bool silent)
|
|||||||
* Save Preferences to SD Card
|
* Save Preferences to SD Card
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void
|
void
|
||||||
SavePrefsToSD (int slot, bool silent)
|
SavePrefsToSD (bool silent)
|
||||||
{
|
{
|
||||||
char filepath[1024];
|
char filepath[1024];
|
||||||
int datasize;
|
int datasize;
|
||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
ShowAction ((char*) "Saving prefs to SD...");
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving prefs to SD...");
|
||||||
|
|
||||||
#ifdef SDUSE_LFN
|
#ifdef SDUSE_LFN
|
||||||
sprintf (filepath, "%s/%s/%s", rootSDdir, SNESSAVEDIR, PREFS_FILE_NAME);
|
sprintf (filepath, "%s/%s/%s", ROOTSDDIR, SNESSAVEDIR, PREFS_FILE_NAME);
|
||||||
#else
|
#else
|
||||||
sprintf (filepath, "%s/%s/%s", rootSDdir, SNESSAVEDIR, PREFS_FILE_NAME);
|
sprintf (filepath, "%s/%s/%s", ROOTSDDIR, SNESSAVEDIR, PREFS_FILE_NAME);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
datasize = preparePrefsData ();
|
datasize = preparePrefsData ();
|
||||||
@ -420,7 +392,7 @@ SavePrefsToSD (int slot, bool silent)
|
|||||||
* Load Preferences from SD Card
|
* Load Preferences from SD Card
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void
|
void
|
||||||
LoadPrefsFromSD (int slot, bool silent)
|
LoadPrefsFromSD (bool silent)
|
||||||
{
|
{
|
||||||
char filepath[1024];
|
char filepath[1024];
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
@ -428,9 +400,9 @@ LoadPrefsFromSD (int slot, bool silent)
|
|||||||
ShowAction ((char*) "Loading prefs from SD...");
|
ShowAction ((char*) "Loading prefs from SD...");
|
||||||
|
|
||||||
#ifdef SDUSE_LFN
|
#ifdef SDUSE_LFN
|
||||||
sprintf (filepath, "%s/%s/%s", rootSDdir, SNESSAVEDIR, PREFS_FILE_NAME);
|
sprintf (filepath, "%s/%s/%s", ROOTSDDIR, SNESSAVEDIR, PREFS_FILE_NAME);
|
||||||
#else
|
#else
|
||||||
sprintf (filepath, "%s/%s/%s", rootSDdir, SNESSAVEDIR, PREFS_FILE_NAME);
|
sprintf (filepath, "%s/%s/%s", ROOTSDDIR, SNESSAVEDIR, PREFS_FILE_NAME);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
offset = LoadBufferFromSD (filepath, silent);
|
offset = LoadBufferFromSD (filepath, silent);
|
||||||
|
@ -21,15 +21,15 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
static int FileSortCallback(const void *f1, const void *f2);
|
||||||
int updateSDdirname();
|
int updateSDdirname();
|
||||||
int parseSDdirectory();
|
int parseSDdirectory();
|
||||||
int LoadSDFile (char *filename, int length);
|
int LoadSDFile (char *filename, int length);
|
||||||
void SaveSRAMToSD (int slot, bool silent);
|
void SaveSRAMToSD (bool silent);
|
||||||
void LoadSRAMFromSD (int slot, bool silent);
|
void LoadSRAMFromSD (bool silent);
|
||||||
void SavePrefsToSD (int slot, bool silent);
|
void SavePrefsToSD (bool silent);
|
||||||
void LoadPrefsFromSD (int slot, bool silent);
|
void LoadPrefsFromSD (bool silent);
|
||||||
|
|
||||||
extern char rootSDdir[MAXPATHLEN];
|
|
||||||
extern char currSDdir[MAXPATHLEN];
|
extern char currSDdir[MAXPATHLEN];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -18,7 +18,7 @@ extern "C"
|
|||||||
{
|
{
|
||||||
#include "smb.h"
|
#include "smb.h"
|
||||||
}
|
}
|
||||||
#include "ngcunzip.h"
|
#include "unzip.h"
|
||||||
#include "memmap.h"
|
#include "memmap.h"
|
||||||
#include "video.h"
|
#include "video.h"
|
||||||
#include "ftfont.h"
|
#include "ftfont.h"
|
||||||
@ -382,7 +382,9 @@ SaveSRAMToSMB (bool8 silent)
|
|||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
sprintf (filepath, "%s\\%s.srm", SNESSAVEDIR, Memory.ROMName);
|
sprintf (filepath, "%s\\%s.srm", SNESSAVEDIR, Memory.ROMName);
|
||||||
ShowAction ((char*) "Saving SRAM to SMB...");
|
|
||||||
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving SRAM to SMB...");
|
||||||
|
|
||||||
datasize = prepareEXPORTsavedata ();
|
datasize = prepareEXPORTsavedata ();
|
||||||
|
|
||||||
@ -436,7 +438,9 @@ SavePrefsToSMB (bool8 silent)
|
|||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
sprintf (filepath, "%s\\%s", SNESSAVEDIR, PREFS_FILE_NAME);
|
sprintf (filepath, "%s\\%s", SNESSAVEDIR, PREFS_FILE_NAME);
|
||||||
ShowAction ((char*) "Saving preferences to SMB...");
|
|
||||||
|
if (!silent)
|
||||||
|
ShowAction ((char*) "Saving preferences to SMB...");
|
||||||
|
|
||||||
datasize = preparePrefsData ();
|
datasize = preparePrefsData ();
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ unsigned int wmpadmap[] = { WPAD_BUTTON_B, WPAD_BUTTON_2,
|
|||||||
};
|
};
|
||||||
/*** Classic Controller Padmap ***/
|
/*** Classic Controller Padmap ***/
|
||||||
unsigned int ccpadmap[] = { WPAD_CLASSIC_BUTTON_A, WPAD_CLASSIC_BUTTON_B,
|
unsigned int ccpadmap[] = { WPAD_CLASSIC_BUTTON_A, WPAD_CLASSIC_BUTTON_B,
|
||||||
WPAD_CLASSIC_BUTTON_Y, WPAD_CLASSIC_BUTTON_X,
|
WPAD_CLASSIC_BUTTON_X, WPAD_CLASSIC_BUTTON_Y,
|
||||||
WPAD_CLASSIC_BUTTON_FULL_L, WPAD_CLASSIC_BUTTON_FULL_R,
|
WPAD_CLASSIC_BUTTON_FULL_L, WPAD_CLASSIC_BUTTON_FULL_R,
|
||||||
WPAD_CLASSIC_BUTTON_MINUS, WPAD_CLASSIC_BUTTON_PLUS,
|
WPAD_CLASSIC_BUTTON_MINUS, WPAD_CLASSIC_BUTTON_PLUS,
|
||||||
WPAD_CLASSIC_BUTTON_UP, WPAD_CLASSIC_BUTTON_DOWN,
|
WPAD_CLASSIC_BUTTON_UP, WPAD_CLASSIC_BUTTON_DOWN,
|
||||||
@ -399,7 +399,34 @@ decodepad (int pad)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/****************************************************************************
|
||||||
|
* setFrameTimerMethod()
|
||||||
|
* change frametimer method depending on whether ROM is NTSC or PAL
|
||||||
|
****************************************************************************/
|
||||||
|
extern u8 vmode_60hz;
|
||||||
|
int timerstyle;
|
||||||
|
|
||||||
|
void setFrameTimerMethod()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Set frametimer method
|
||||||
|
(timerstyle: 0=NTSC vblank, 1=PAL int timer)
|
||||||
|
*/
|
||||||
|
if ( Settings.PAL ) {
|
||||||
|
if(vmode_60hz == 1)
|
||||||
|
timerstyle = 1;
|
||||||
|
else
|
||||||
|
timerstyle = 0;
|
||||||
|
//timediffallowed = Settings.FrameTimePAL;
|
||||||
|
} else {
|
||||||
|
if(vmode_60hz == 1)
|
||||||
|
timerstyle = 0;
|
||||||
|
else
|
||||||
|
timerstyle = 1;
|
||||||
|
//timediffallowed = Settings.FrameTimeNTSC;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* NGCReportButtons
|
* NGCReportButtons
|
||||||
* Called on each rendered frame
|
* Called on each rendered frame
|
||||||
@ -445,7 +472,7 @@ NGCReportButtons ()
|
|||||||
|
|
||||||
if ( GCSettings.AutoSave == 1 )
|
if ( GCSettings.AutoSave == 1 )
|
||||||
{
|
{
|
||||||
if ( WaitPromptChoice ((char*)"Save SRAM?", (char*)"Don't Save", (char*)"Save") )
|
//if ( WaitPromptChoice ((char*)"Save SRAM?", (char*)"Don't Save", (char*)"Save") )
|
||||||
quickSaveSRAM ( SILENT );
|
quickSaveSRAM ( SILENT );
|
||||||
}
|
}
|
||||||
else if ( GCSettings.AutoSave == 2 )
|
else if ( GCSettings.AutoSave == 2 )
|
||||||
@ -465,6 +492,11 @@ NGCReportButtons ()
|
|||||||
mainmenu ();
|
mainmenu ();
|
||||||
FrameTimer = 0;
|
FrameTimer = 0;
|
||||||
ConfigRequested = 0;
|
ConfigRequested = 0;
|
||||||
|
|
||||||
|
setFrameTimerMethod(); // set frametimer method every time a ROM is loaded
|
||||||
|
|
||||||
|
// auto load freeze/sram?
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -486,7 +518,7 @@ u32 wpad_get_analogues(int pad, float* mag, u16* ang)
|
|||||||
u32 exp_type = 0;
|
u32 exp_type = 0;
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
struct expansion_t exp;
|
struct expansion_t exp;
|
||||||
memset( &exp, 0, sizeof(exp) ); // FIX: necessary? we only look at the struct if an expansion is connected...
|
memset( &exp, 0, sizeof(exp) );
|
||||||
|
|
||||||
if ( WPAD_Probe( pad, &exp_type) == 0) // check wiimote and expansion status (first if wiimote is connected & no errors)
|
if ( WPAD_Probe( pad, &exp_type) == 0) // check wiimote and expansion status (first if wiimote is connected & no errors)
|
||||||
{
|
{
|
||||||
@ -597,8 +629,6 @@ SetDefaultButtonMap ()
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
/* Eke-Eke: initialize frame Sync */
|
/* Eke-Eke: initialize frame Sync */
|
||||||
extern void S9xInitSync();
|
extern void S9xInitSync();
|
||||||
extern u8 vmode_60hz;
|
|
||||||
int timerstyle;
|
|
||||||
|
|
||||||
void
|
void
|
||||||
emulate ()
|
emulate ()
|
||||||
@ -607,24 +637,8 @@ emulate ()
|
|||||||
S9xSetSoundMute (TRUE);
|
S9xSetSoundMute (TRUE);
|
||||||
AudioStart ();
|
AudioStart ();
|
||||||
S9xInitSync();
|
S9xInitSync();
|
||||||
|
|
||||||
/*
|
setFrameTimerMethod(); // also called in NGCReportButtons()
|
||||||
Set frametimer method
|
|
||||||
(timerstyle: 0=NTSC vblank, 1=PAL int timer)
|
|
||||||
*/
|
|
||||||
if ( Settings.PAL ) {
|
|
||||||
if(vmode_60hz == 1)
|
|
||||||
timerstyle = 1;
|
|
||||||
else
|
|
||||||
timerstyle = 0;
|
|
||||||
//timediffallowed = Settings.FrameTimePAL;
|
|
||||||
} else {
|
|
||||||
if(vmode_60hz == 1)
|
|
||||||
timerstyle = 0;
|
|
||||||
else
|
|
||||||
timerstyle = 1;
|
|
||||||
//timediffallowed = Settings.FrameTimeNTSC;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
@ -160,8 +160,8 @@
|
|||||||
#include "snes9x.h"
|
#include "snes9x.h"
|
||||||
|
|
||||||
// FIX: these are unused, but could be... must also change "freezecomment", PREFSVERSTRING, and "sramcomment"
|
// FIX: these are unused, but could be... must also change "freezecomment", PREFSVERSTRING, and "sramcomment"
|
||||||
#define GCVERSION "002"
|
//#define GCVERSION "002"
|
||||||
#define GCVERSIONSTRING "Snes9x 1.5 v002"
|
//#define GCVERSIONSTRING "Snes9x 1.5 v002"
|
||||||
|
|
||||||
#define NOTSILENT 0
|
#define NOTSILENT 0
|
||||||
#define SILENT 1
|
#define SILENT 1
|
||||||
@ -204,7 +204,7 @@ END_EXTERN_C
|
|||||||
3 SD card in slot B
|
3 SD card in slot B
|
||||||
4 SMB share ***/
|
4 SMB share ***/
|
||||||
#ifndef QUICK_SAVE_SLOT
|
#ifndef QUICK_SAVE_SLOT
|
||||||
#define QUICK_SAVE_SLOT 1
|
#define QUICK_SAVE_SLOT 2 // save to SD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*** default SMB settings ***/
|
/*** default SMB settings ***/
|
||||||
|
@ -28,7 +28,7 @@ extern int padcal;
|
|||||||
extern unsigned short gcpadmap[];
|
extern unsigned short gcpadmap[];
|
||||||
//extern unsigned short padmap[4];
|
//extern unsigned short padmap[4];
|
||||||
|
|
||||||
char sramcomment[2][32] = { {"Snes9x GX 2.0.1b8 SRAM"}, {"Savegame"} };
|
char sramcomment[2][32] = { {"Snes9x GX 003 SRAM"}, {"Savegame"} };
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Prepare Memory Card SRAM Save Data
|
* Prepare Memory Card SRAM Save Data
|
||||||
@ -140,7 +140,7 @@ decodesavedata (int readsize)
|
|||||||
// Check for exportable format sram - it has the sram comment at the start
|
// Check for exportable format sram - it has the sram comment at the start
|
||||||
memcpy (sramcomment, savebuffer, 32);
|
memcpy (sramcomment, savebuffer, 32);
|
||||||
|
|
||||||
if ( strncmp (sramcomment, "Snes9x GX 2.0", 13) == 0 )
|
if ( (strncmp (sramcomment, "Snes9x GX 2.0", 13) == 0) || (strncmp (sramcomment, "Snes9x GX 00", 12) == 0) ) // version 2.0.XX or 00x
|
||||||
{
|
{
|
||||||
offset = 64;
|
offset = 64;
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ void quickLoadSRAM (bool8 silent)
|
|||||||
break;
|
break;
|
||||||
case CARD_SLOTA+2:
|
case CARD_SLOTA+2:
|
||||||
case CARD_SLOTB+2:
|
case CARD_SLOTB+2:
|
||||||
LoadSRAMFromSD(QUICK_SAVE_SLOT-2, silent);
|
LoadSRAMFromSD(silent);
|
||||||
break;
|
break;
|
||||||
case CARD_SLOTA+4:
|
case CARD_SLOTA+4:
|
||||||
LoadSRAMFromSMB(SILENT);
|
LoadSRAMFromSMB(SILENT);
|
||||||
@ -261,7 +261,7 @@ void quickSaveSRAM (bool8 silent)
|
|||||||
break;
|
break;
|
||||||
case CARD_SLOTA+2:
|
case CARD_SLOTA+2:
|
||||||
case CARD_SLOTB+2:
|
case CARD_SLOTB+2:
|
||||||
SaveSRAMToSD(QUICK_SAVE_SLOT-2, silent);
|
SaveSRAMToSD(silent);
|
||||||
break;
|
break;
|
||||||
case CARD_SLOTA+4:
|
case CARD_SLOTA+4:
|
||||||
SaveSRAMToSMB(SILENT);
|
SaveSRAMToSMB(SILENT);
|
||||||
|
184
source/ngc/unzip.cpp
Normal file
184
source/ngc/unzip.cpp
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* Snes9x 1.50
|
||||||
|
*
|
||||||
|
* Nintendo Gamecube Unzip - borrowed from the GPP
|
||||||
|
*
|
||||||
|
* softdev July 2006
|
||||||
|
****************************************************************************/
|
||||||
|
#include <gccore.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <zlib.h>
|
||||||
|
#include "dvd.h"
|
||||||
|
#include "video.h"
|
||||||
|
#include "ftfont.h"
|
||||||
|
#include "unzip.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PKWare Zip Header - adopted into zip standard
|
||||||
|
*/
|
||||||
|
#define PKZIPID 0x504b0304
|
||||||
|
#define MAXROM 0x500000
|
||||||
|
#define ZIPCHUNK 2048
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Zip files are stored little endian
|
||||||
|
* Support functions for short and int types
|
||||||
|
*/
|
||||||
|
u32
|
||||||
|
FLIP32 (u32 b)
|
||||||
|
{
|
||||||
|
unsigned int c;
|
||||||
|
|
||||||
|
c = (b & 0xff000000) >> 24;
|
||||||
|
c |= (b & 0xff0000) >> 8;
|
||||||
|
c |= (b & 0xff00) << 8;
|
||||||
|
c |= (b & 0xff) << 24;
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
u16
|
||||||
|
FLIP16 (u16 b)
|
||||||
|
{
|
||||||
|
u16 c;
|
||||||
|
|
||||||
|
c = (b & 0xff00) >> 8;
|
||||||
|
c |= (b & 0xff) << 8;
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* IsZipFile
|
||||||
|
*
|
||||||
|
* Returns TRUE when PKZIPID is first four characters of buffer
|
||||||
|
****************************************************************************/
|
||||||
|
int
|
||||||
|
IsZipFile (char *buffer)
|
||||||
|
{
|
||||||
|
unsigned int *check;
|
||||||
|
|
||||||
|
check = (unsigned int *) buffer;
|
||||||
|
|
||||||
|
if (check[0] == PKZIPID)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* unzip
|
||||||
|
*
|
||||||
|
* It should be noted that there is a limit of 5MB total size for any ROM
|
||||||
|
******************************************************************************/
|
||||||
|
int
|
||||||
|
UnZipBuffer (unsigned char *outbuffer, u64 discoffset, short where, FILE* filehandle)
|
||||||
|
{
|
||||||
|
PKZIPHEADER pkzip;
|
||||||
|
int zipoffset = 0;
|
||||||
|
int zipchunk = 0;
|
||||||
|
char out[ZIPCHUNK];
|
||||||
|
z_stream zs;
|
||||||
|
int res;
|
||||||
|
int bufferoffset = 0;
|
||||||
|
int have = 0;
|
||||||
|
char readbuffer[2048];
|
||||||
|
char msg[128];
|
||||||
|
|
||||||
|
/*** Read Zip Header ***/
|
||||||
|
switch (where) {
|
||||||
|
case 0: // SD Card
|
||||||
|
fseek(filehandle, 0, SEEK_SET);
|
||||||
|
fread (readbuffer, 1, 2048, filehandle); break;
|
||||||
|
case 1: // DVD
|
||||||
|
dvd_read (readbuffer, 2048, discoffset); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Copy PKZip header to local, used as info ***/
|
||||||
|
memcpy (&pkzip, readbuffer, sizeof (PKZIPHEADER));
|
||||||
|
|
||||||
|
pkzip.uncompressedSize = FLIP32 (pkzip.uncompressedSize);
|
||||||
|
|
||||||
|
sprintf (msg, "Unzipping %d bytes ... Wait",
|
||||||
|
pkzip.uncompressedSize);
|
||||||
|
ShowAction (msg);
|
||||||
|
|
||||||
|
/*** Prepare the zip stream ***/
|
||||||
|
memset (&zs, 0, sizeof (z_stream));
|
||||||
|
zs.zalloc = Z_NULL;
|
||||||
|
zs.zfree = Z_NULL;
|
||||||
|
zs.opaque = Z_NULL;
|
||||||
|
zs.avail_in = 0;
|
||||||
|
zs.next_in = Z_NULL;
|
||||||
|
res = inflateInit2 (&zs, -MAX_WBITS);
|
||||||
|
|
||||||
|
if (res != Z_OK)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/*** Set ZipChunk for first pass ***/
|
||||||
|
zipoffset =
|
||||||
|
(sizeof (PKZIPHEADER) + FLIP16 (pkzip.filenameLength) +
|
||||||
|
FLIP16 (pkzip.extraDataLength));
|
||||||
|
zipchunk = ZIPCHUNK - zipoffset;
|
||||||
|
|
||||||
|
/*** Now do it! ***/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
zs.avail_in = zipchunk;
|
||||||
|
zs.next_in = (Bytef *) & readbuffer[zipoffset];
|
||||||
|
|
||||||
|
/*** Now inflate until input buffer is exhausted ***/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
zs.avail_out = ZIPCHUNK;
|
||||||
|
zs.next_out = (Bytef *) & out;
|
||||||
|
|
||||||
|
res = inflate (&zs, Z_NO_FLUSH);
|
||||||
|
|
||||||
|
if (res == Z_MEM_ERROR)
|
||||||
|
{
|
||||||
|
inflateEnd (&zs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
have = ZIPCHUNK - zs.avail_out;
|
||||||
|
if (have)
|
||||||
|
{
|
||||||
|
/*** Copy to normal block buffer ***/
|
||||||
|
memcpy (&outbuffer[bufferoffset], &out, have);
|
||||||
|
bufferoffset += have;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
while (zs.avail_out == 0);
|
||||||
|
|
||||||
|
/*** Readup the next 2k block ***/
|
||||||
|
zipoffset = 0;
|
||||||
|
zipchunk = ZIPCHUNK;
|
||||||
|
|
||||||
|
switch (where) {
|
||||||
|
case 0: // SD Card
|
||||||
|
fread (readbuffer, 1, 2048, filehandle); break;
|
||||||
|
case 1: // DVD
|
||||||
|
discoffset += 2048;
|
||||||
|
dvd_read (readbuffer, 2048, discoffset); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
while (res != Z_STREAM_END);
|
||||||
|
|
||||||
|
inflateEnd (&zs);
|
||||||
|
|
||||||
|
if (res == Z_STREAM_END)
|
||||||
|
{
|
||||||
|
if (pkzip.uncompressedSize == (u32) bufferoffset)
|
||||||
|
return bufferoffset;
|
||||||
|
else
|
||||||
|
return pkzip.uncompressedSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
35
source/ngc/unzip.h
Normal file
35
source/ngc/unzip.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* Snes9x 1.50
|
||||||
|
*
|
||||||
|
* Nintendo Gamecube Unzip - borrowed from the GPP
|
||||||
|
*
|
||||||
|
* softdev July 2006
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef _UNZIP_
|
||||||
|
#define _UNZIP_
|
||||||
|
|
||||||
|
extern int IsZipFile (char *buffer);
|
||||||
|
int UnZipBuffer (unsigned char *outbuffer, u64 discoffset, short where, FILE* filehandle);
|
||||||
|
/*
|
||||||
|
* Zip file header definition
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned int zipid __attribute__ ((__packed__)); // 0x04034b50
|
||||||
|
unsigned short zipversion __attribute__ ((__packed__));
|
||||||
|
unsigned short zipflags __attribute__ ((__packed__));
|
||||||
|
unsigned short compressionMethod __attribute__ ((__packed__));
|
||||||
|
unsigned short lastmodtime __attribute__ ((__packed__));
|
||||||
|
unsigned short lastmoddate __attribute__ ((__packed__));
|
||||||
|
unsigned int crc32 __attribute__ ((__packed__));
|
||||||
|
unsigned int compressedSize __attribute__ ((__packed__));
|
||||||
|
unsigned int uncompressedSize __attribute__ ((__packed__));
|
||||||
|
unsigned short filenameLength __attribute__ ((__packed__));
|
||||||
|
unsigned short extraDataLength __attribute__ ((__packed__));
|
||||||
|
}
|
||||||
|
PKZIPHEADER;
|
||||||
|
|
||||||
|
u32 FLIP32 (u32 b);
|
||||||
|
u16 FLIP16 (u16 b);
|
||||||
|
|
||||||
|
#endif
|
@ -392,10 +392,10 @@ clearscreen (int colour)
|
|||||||
VIDEO_ClearFrameBuffer (vmode, xfb[whichfb], colour);
|
VIDEO_ClearFrameBuffer (vmode, xfb[whichfb], colour);
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
// on wii copy from memory
|
// on wii copy from memory
|
||||||
//memcpy ((char *) xfb[whichfb], (char *) backdrop, 640 * screenheight * 2);
|
memcpy ((char *) xfb[whichfb], (char *) backdrop, 640 * screenheight * 2);
|
||||||
#else
|
#else
|
||||||
// on gc copy from aram
|
// on gc copy from aram
|
||||||
//ARAMFetch ((char *) xfb[whichfb], (char *) AR_BACKDROP, 640 * screenheight * 2); // FIX
|
ARAMFetch ((char *) xfb[whichfb], (char *) AR_BACKDROP, 640 * screenheight * 2); // FIX
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user