Copy disabled (too large)
Download .txt
Showing preview only (12,319K chars total). Download the full file to get everything.
Repository: AliceLR/megazeux
Branch: master
Commit: 73ce4e679fc4
Files: 1307
Total size: 11.6 MB
Directory structure:
gitextract_vpyz_01n/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── main.yml
├── .gitignore
├── .valgrindrc
├── BUILDING.md
├── LICENSE
├── Makefile
├── README.md
├── arch/
│ ├── 3ds/
│ │ ├── CONFIG.3DS
│ │ ├── Makefile.in
│ │ ├── README.md
│ │ ├── audio.c
│ │ ├── event.c
│ │ ├── event.h
│ │ ├── keyboard.c
│ │ ├── keyboard.h
│ │ ├── pad.config
│ │ ├── pad.config.sdl12
│ │ ├── pad.config.sdl2
│ │ ├── platform.c
│ │ ├── platform.h
│ │ ├── render.cpp
│ │ ├── render.h
│ │ ├── shader_2d.g.pica
│ │ ├── shader_2d.v.pica
│ │ ├── shader_playfield.g.pica
│ │ ├── shader_playfield.v.pica
│ │ └── thread.h
│ ├── LICENSE.3rd
│ ├── LICENSE.CC0
│ ├── LICENSE.DJGPP
│ ├── LICENSE.LGPL2
│ ├── LICENSE.MPL2
│ ├── LICENSE.Newlib
│ ├── README
│ ├── amiga/
│ │ ├── CONFIG.AMIGA
│ │ ├── MZXRun
│ │ ├── Makefile.in
│ │ ├── MegaZeux
│ │ ├── MegaZeux.info
│ │ └── README
│ ├── android/
│ │ ├── CONFIG.ANDROID
│ │ ├── Makefile.deps
│ │ ├── Makefile.in
│ │ ├── README.md
│ │ ├── SDL2-page-sizes.patch
│ │ ├── config_types.h
│ │ ├── libogg-Android.mk
│ │ ├── libvorbis-Android.mk
│ │ └── project/
│ │ ├── app/
│ │ │ ├── build.gradle
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main/
│ │ │ │ └── Android.mk
│ │ │ ├── proguard-rules.pro
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ ├── net/
│ │ │ │ │ └── digitalmzx/
│ │ │ │ │ └── megazeux/
│ │ │ │ │ ├── GameActivity.java
│ │ │ │ │ └── MainActivity.java
│ │ │ │ └── org/
│ │ │ │ └── libsdl/
│ │ │ │ └── app/
│ │ │ │ ├── HIDDevice.java
│ │ │ │ ├── HIDDeviceBLESteamController.java
│ │ │ │ ├── HIDDeviceManager.java
│ │ │ │ ├── HIDDeviceUSB.java
│ │ │ │ ├── SDL.java
│ │ │ │ ├── SDLActivity.java
│ │ │ │ ├── SDLAudioManager.java
│ │ │ │ ├── SDLControllerManager.java
│ │ │ │ └── SDLSurface.java
│ │ │ └── res/
│ │ │ ├── raw/
│ │ │ │ └── readme
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ └── settings.gradle
│ ├── compat.inc
│ ├── darwin/
│ │ ├── MZXRun.plist
│ │ ├── Makefile.arch
│ │ ├── Makefile.in
│ │ ├── MegaZeux.plist
│ │ ├── README.md
│ │ ├── bin/
│ │ │ └── otool
│ │ ├── bundle.sh
│ │ ├── dmg.sh
│ │ └── lipo.sh
│ ├── djgpp/
│ │ ├── CONFIG.DJGPP
│ │ ├── Makefile.in
│ │ ├── audio.c
│ │ ├── driver_sb.h
│ │ ├── event.c
│ │ ├── interrupt.S
│ │ ├── platform.c
│ │ ├── platform_djgpp.h
│ │ ├── render_ega.c
│ │ ├── render_svga.c
│ │ └── thread.h
│ ├── dreamcast/
│ │ ├── CONFIG.DC
│ │ ├── Makefile.in
│ │ ├── audio.c
│ │ ├── event.c
│ │ ├── pad.config
│ │ ├── platform.c
│ │ ├── render.c
│ │ ├── render_fb.c
│ │ └── thread.h
│ ├── emscripten/
│ │ ├── CONFIG.HTML5
│ │ ├── Makefile.in
│ │ ├── README
│ │ ├── emzip.c
│ │ ├── web/
│ │ │ ├── package.json
│ │ │ ├── res/
│ │ │ │ ├── docs/
│ │ │ │ │ └── emscripten_readme.txt
│ │ │ │ ├── index.html
│ │ │ │ └── mzxrun_loader.js
│ │ │ ├── rollup.config.js
│ │ │ └── src/
│ │ │ ├── index.js
│ │ │ ├── storage.js
│ │ │ ├── storage_emscripten.js
│ │ │ ├── util.js
│ │ │ └── zip.js
│ │ └── whitelist.json
│ ├── gp2x/
│ │ ├── Makefile.in
│ │ ├── README
│ │ └── pad.config
│ ├── install.inc
│ ├── lha.inc
│ ├── manifest.sh
│ ├── mingw/
│ │ ├── Makefile.in
│ │ ├── checkres-readme.txt
│ │ ├── checkres.bat
│ │ ├── directx.bat
│ │ ├── installer.nsi
│ │ └── pefix.c
│ ├── msvc/
│ │ ├── Core.vcxproj
│ │ ├── Core.vcxproj.filters
│ │ ├── Editor.vcxproj
│ │ ├── Editor.vcxproj.filters
│ │ ├── MZXRun.vcxproj
│ │ ├── MZXRun.vcxproj.filters
│ │ ├── MegaZeux.sln
│ │ ├── MegaZeux.vcxproj
│ │ ├── MegaZeux.vcxproj.filters
│ │ ├── README.txt
│ │ ├── config.h
│ │ ├── dirent.h
│ │ ├── msvc.h
│ │ ├── update_version.cmd
│ │ ├── win32time.c
│ │ └── win32time.h
│ ├── nds/
│ │ ├── CONFIG.NDS
│ │ ├── Makefile
│ │ ├── Makefile.in
│ │ ├── README
│ │ ├── arm7/
│ │ │ ├── Makefile
│ │ │ └── source/
│ │ │ └── arm7main.c
│ │ ├── audio.c
│ │ ├── dlmalloc.c
│ │ ├── dlmalloc.h
│ │ ├── event.c
│ │ ├── event.h
│ │ ├── evq.c
│ │ ├── evq.h
│ │ ├── extmem.c
│ │ ├── extmem.h
│ │ ├── gen_protected_palette.py
│ │ ├── internals_notes.txt
│ │ ├── malloc_opts.h
│ │ ├── pad.config
│ │ ├── platform.c
│ │ ├── platform.h
│ │ ├── ram.c
│ │ ├── ram.h
│ │ ├── render.c
│ │ └── render.h
│ ├── nds-blocksds/
│ │ ├── CONFIG.NDS
│ │ └── Makefile.in
│ ├── none/
│ │ └── Makefile.in
│ ├── pandora/
│ │ ├── Makefile.in
│ │ └── README
│ ├── psp/
│ │ ├── CONFIG.PSP
│ │ ├── Makefile.in
│ │ ├── README
│ │ ├── pad.config
│ │ └── platform.c
│ ├── psvita/
│ │ ├── CONFIG.PSVITA
│ │ ├── Makefile.in
│ │ ├── README.md
│ │ ├── pad.config.sdl12
│ │ └── sce_sys/
│ │ └── livearea/
│ │ └── contents/
│ │ └── template.xml
│ ├── switch/
│ │ ├── CONFIG.SWITCH
│ │ ├── Makefile.in
│ │ └── pad.config
│ ├── unix/
│ │ ├── Makefile.in
│ │ ├── README
│ │ ├── megazeux.desktop
│ │ ├── megazeux.metainfo.xml
│ │ └── mzxrun.desktop
│ ├── wii/
│ │ ├── CONFIG.WII
│ │ ├── Makefile.in
│ │ ├── README
│ │ ├── audio.c
│ │ ├── event.c
│ │ ├── meta.xml
│ │ ├── network.cpp
│ │ ├── pad.config
│ │ ├── pad.config.sdl
│ │ ├── pad.config.sdl2
│ │ ├── platform.c
│ │ ├── render_gx.c
│ │ ├── render_xfb.c
│ │ └── thread.h
│ ├── wiiu/
│ │ ├── CONFIG.WIIU
│ │ ├── Makefile.in
│ │ ├── meta.xml
│ │ └── pad.config
│ ├── xcode/
│ │ ├── MZXRun/
│ │ │ ├── Assets.xcassets/
│ │ │ │ └── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── Info.plist
│ │ ├── MegaZeux/
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj/
│ │ │ │ └── MainMenu.xib
│ │ │ └── Info.plist
│ │ ├── MegaZeux.xcodeproj/
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── README.md
│ │ ├── config.h
│ │ └── update_version.sh
│ └── zip.inc
├── assets/
│ ├── ascii.chr
│ ├── blank.chr
│ ├── default.chr
│ ├── edit.chr
│ ├── gamecontrollerdb.txt
│ ├── glsl/
│ │ ├── README.md
│ │ ├── cursor.frag
│ │ ├── cursor.vert
│ │ ├── mouse.frag
│ │ ├── mouse.vert
│ │ ├── scaler.vert
│ │ ├── scalers/
│ │ │ ├── crt-wave.frag
│ │ │ ├── crt.frag
│ │ │ ├── emboss.frag
│ │ │ ├── epx.frag
│ │ │ ├── greyscale.frag
│ │ │ ├── hqscale.frag
│ │ │ ├── hqscale.vert
│ │ │ ├── nearest.frag
│ │ │ ├── sai.frag
│ │ │ ├── semisoft.frag
│ │ │ ├── sepia.frag
│ │ │ └── simple.frag
│ │ ├── tilemap.frag
│ │ ├── tilemap.smzx.frag
│ │ └── tilemap.vert
│ ├── help.fil
│ ├── smzx.chr
│ ├── smzx.pal
│ └── smzx2.chr
├── config.sh
├── config.txt
├── contrib/
│ ├── archicons/
│ │ └── README
│ ├── gdm2s3m/
│ │ ├── COPYING
│ │ ├── CREDITS
│ │ ├── README
│ │ ├── build.bat
│ │ ├── doc/
│ │ │ ├── gdm.txt
│ │ │ ├── s3m-form.txt
│ │ │ └── s3m_effects.txt
│ │ └── src/
│ │ ├── Makefile.in
│ │ ├── error.c
│ │ ├── error.h
│ │ ├── gdm.c
│ │ ├── gdm.h
│ │ ├── gdm2s3m.c
│ │ ├── gdm2s3m.h
│ │ ├── s3m.c
│ │ ├── s3m.h
│ │ ├── types.h
│ │ ├── utility.c
│ │ └── utility.h
│ ├── hlp2html/
│ │ ├── README.md
│ │ ├── fonts.css
│ │ ├── style.css
│ │ └── style_color.css
│ ├── icons/
│ │ ├── Makefile.in
│ │ ├── icon.rc
│ │ └── old/
│ │ ├── logicow/
│ │ │ ├── ghostblue.rc
│ │ │ └── ghostred.rc
│ │ └── quantump/
│ │ ├── quantump.icns
│ │ └── quantump.rc
│ ├── infback9/
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── infback9.c
│ │ ├── infback9.h
│ │ ├── inffix9.h
│ │ ├── inflate9.h
│ │ ├── inftree9.c
│ │ ├── inftree9.h
│ │ └── zutil.h
│ ├── khash/
│ │ └── khash.h
│ ├── libmodplug/
│ │ ├── AUTHORS
│ │ ├── COPYING
│ │ ├── ChangeLog
│ │ ├── NEWS
│ │ ├── README
│ │ ├── TODO
│ │ └── src/
│ │ ├── Makefile.in
│ │ ├── fastmix.cpp
│ │ ├── libmodplug/
│ │ │ ├── it_defs.h
│ │ │ ├── sndfile.h
│ │ │ └── stdafx.h
│ │ ├── load_669.cpp
│ │ ├── load_amf.cpp
│ │ ├── load_dsm.cpp
│ │ ├── load_far.cpp
│ │ ├── load_gdm.cpp
│ │ ├── load_it.cpp
│ │ ├── load_med.cpp
│ │ ├── load_mod.cpp
│ │ ├── load_mtm.cpp
│ │ ├── load_okt.cpp
│ │ ├── load_s3m.cpp
│ │ ├── load_stm.cpp
│ │ ├── load_ult.cpp
│ │ ├── load_wav.cpp
│ │ ├── load_xm.cpp
│ │ ├── mmcmp.cpp
│ │ ├── modplug.cpp
│ │ ├── modplug.h
│ │ ├── snd_dsp.cpp
│ │ ├── snd_flt.cpp
│ │ ├── snd_fx.cpp
│ │ ├── sndfile.cpp
│ │ ├── sndmix.cpp
│ │ └── tables.h
│ ├── libxmp/
│ │ ├── Makefile.megazeux
│ │ ├── Makefile.megazeux-gen
│ │ ├── README
│ │ ├── README.megazeux.md
│ │ ├── docs/
│ │ │ ├── COPYING
│ │ │ ├── CREDITS
│ │ │ └── Changelog
│ │ ├── include/
│ │ │ └── xmp.h
│ │ ├── mzx-gen.sh
│ │ └── src/
│ │ ├── callbackio.h
│ │ ├── common.h
│ │ ├── control.c
│ │ ├── dataio.c
│ │ ├── effects.c
│ │ ├── effects.h
│ │ ├── extras.c
│ │ ├── extras.h
│ │ ├── far_extras.c
│ │ ├── far_extras.h
│ │ ├── filetype.c
│ │ ├── filter.c
│ │ ├── flow.c
│ │ ├── format.c
│ │ ├── format.h
│ │ ├── hio.c
│ │ ├── hio.h
│ │ ├── hmn_extras.c
│ │ ├── hmn_extras.h
│ │ ├── lfo.c
│ │ ├── lfo.h
│ │ ├── list.h
│ │ ├── load.c
│ │ ├── load_helpers.c
│ │ ├── loaders/
│ │ │ ├── 669_load.c
│ │ │ ├── amf_load.c
│ │ │ ├── asylum_load.c
│ │ │ ├── common.c
│ │ │ ├── far_load.c
│ │ │ ├── flt_load.c
│ │ │ ├── gdm_load.c
│ │ │ ├── hmn_load.c
│ │ │ ├── ice_load.c
│ │ │ ├── iff.c
│ │ │ ├── iff.h
│ │ │ ├── it.h
│ │ │ ├── it_load.c
│ │ │ ├── itsex.c
│ │ │ ├── loader.h
│ │ │ ├── med.h
│ │ │ ├── med2_load.c
│ │ │ ├── med3_load.c
│ │ │ ├── med4_load.c
│ │ │ ├── mmd1_load.c
│ │ │ ├── mmd3_load.c
│ │ │ ├── mmd_common.c
│ │ │ ├── mod.h
│ │ │ ├── mod_load.c
│ │ │ ├── mtm_load.c
│ │ │ ├── okt_load.c
│ │ │ ├── s3m.h
│ │ │ ├── s3m_load.c
│ │ │ ├── sample.c
│ │ │ ├── st_load.c
│ │ │ ├── stm_load.c
│ │ │ ├── ult_load.c
│ │ │ ├── xm.h
│ │ │ └── xm_load.c
│ │ ├── md5.c
│ │ ├── md5.h
│ │ ├── mdataio.h
│ │ ├── med_extras.c
│ │ ├── med_extras.h
│ │ ├── memio.c
│ │ ├── memio.h
│ │ ├── mix_all.c
│ │ ├── mixer.c
│ │ ├── mixer.h
│ │ ├── period.c
│ │ ├── period.h
│ │ ├── player.c
│ │ ├── player.h
│ │ ├── precomp_lut.h
│ │ ├── read_event.c
│ │ ├── rng.c
│ │ ├── rng.h
│ │ ├── scan.c
│ │ ├── smix.c
│ │ ├── tempfile.h
│ │ ├── virtual.c
│ │ └── virtual.h
│ ├── mzvplay/
│ │ └── mzvplay.txt
│ ├── patches/
│ │ ├── libmodplug/
│ │ │ ├── 01-libmodplug-0.8.9.0-fix-looping.diff
│ │ │ ├── 02-libmodplug-0.8.9.0-fix-X86_Convert32To24.diff
│ │ │ ├── 03-libmodplug-0.8.9.0-if0-dead-code-make-globals-static.diff
│ │ │ ├── 04-libmodplug-0.8.9.0-remove-unused-loaders.diff
│ │ │ ├── 05-libmodplug-0.8.9.0-fix-type-punning-warnings.diff
│ │ │ ├── 06-libmodplug-0.8.9.0-remove-unused-defines.diff
│ │ │ ├── 07-libmodplug-0.8.9.0-misc-warning-fixes.diff
│ │ │ ├── 08-libmodplug-0.8.9.0-remove-set-but-unused-variables.diff
│ │ │ ├── 09-libmodplug-0.8.9.0-remove-dll-defines.diff
│ │ │ ├── 10-libmodplug-0.8.9.0-fix-far-volume.diff
│ │ │ ├── 11-libmodplug-0.8.9.0-fix-okt-order-list.diff
│ │ │ ├── 12-libmodplug-0.8.9.0-add-mod-cd61-magic.diff
│ │ │ ├── 13-libmodplug-0.8.9.0-fix-669-tempo.diff
│ │ │ ├── 14-libmodplug-0.8.9.0-add-gdm-loader.diff
│ │ │ └── readme.txt
│ │ └── libxmp/
│ │ ├── 01-libxmp-mzx-integration.patch
│ │ ├── 02-libxmp-mzx-remove-extra-formats.patch
│ │ ├── 03-libxmp-real-max-srate.patch
│ │ └── README
│ └── rad/
│ ├── README.md
│ ├── opal.cpp
│ ├── player20.cpp
│ ├── test_nested_riffs.rad
│ ├── test_nested_riffs_transpose.rad
│ └── validate20.cpp
├── debian/
│ ├── README
│ ├── binary.lintian-overrides
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── docs
│ ├── megazeux.manpages
│ └── rules
├── docs/
│ ├── SDLkeys.txt
│ ├── STYLE.md
│ ├── WIPHelp.txt
│ ├── changelog.txt
│ ├── counter_list.txt
│ ├── cycles_and_commands.txt
│ ├── exotic.txt
│ ├── exotic_translations.txt
│ ├── fileform.html
│ ├── idle_direction_oddities.txt
│ ├── info_mzx.txt
│ ├── joystick.html
│ ├── keycodes.html
│ ├── macro.txt
│ ├── megazeux.1
│ ├── mzxhelp.html
│ ├── old/
│ │ ├── betatest.txt
│ │ ├── filef200.txt
│ │ ├── filef268.txt
│ │ ├── fileform.txt
│ │ ├── megazeux.doc
│ │ ├── mzm.txt
│ │ └── port.txt
│ ├── platform_matrix.html
│ └── push_and_transport.txt
├── megazeux.spec
├── scripts/
│ ├── ajs-buildscripts/
│ │ ├── README
│ │ ├── amiga.sh
│ │ ├── build-rev.sh
│ │ ├── build.sh
│ │ ├── darwin.sh
│ │ ├── global.sh
│ │ ├── gp2x.sh
│ │ ├── nds.sh
│ │ ├── psp.sh
│ │ ├── wii.sh
│ │ ├── windows-x64.sh
│ │ ├── windows-x86.sh
│ │ └── zip-split-debug.sh
│ ├── buildscripts/
│ │ ├── 1_PrepareReleaseEnvironment.bat
│ │ ├── 2_CreateReleases.bat
│ │ ├── 3_PackageReleases.bat
│ │ ├── 4_UploadReleases.bat
│ │ ├── README.md
│ │ ├── mzx-build.sh
│ │ ├── mzx-check.sh
│ │ ├── mzx-init.sh
│ │ ├── mzx-nightly.sh
│ │ ├── mzx-scripts/
│ │ │ ├── build.sh
│ │ │ ├── caverns.sh
│ │ │ ├── common-dkp.sh
│ │ │ ├── common-mingw.sh
│ │ │ ├── common.sh
│ │ │ ├── crlf.sh
│ │ │ ├── patches/
│ │ │ │ └── pspge.patch
│ │ │ ├── platforms/
│ │ │ │ ├── 3ds.sh
│ │ │ │ ├── android.sh
│ │ │ │ ├── default.sh
│ │ │ │ ├── djgpp.sh
│ │ │ │ ├── dreamcast.sh
│ │ │ │ ├── emscripten.sh
│ │ │ │ ├── nds-blocksds.sh
│ │ │ │ ├── nds.sh
│ │ │ │ ├── psp.sh
│ │ │ │ ├── psvita.sh
│ │ │ │ ├── source.sh
│ │ │ │ ├── switch.sh
│ │ │ │ ├── wii.sh
│ │ │ │ ├── wiiu.sh
│ │ │ │ ├── windows-x64.sh
│ │ │ │ └── windows-x86.sh
│ │ │ ├── setup.sh
│ │ │ ├── updates.sh
│ │ │ ├── uploads.sh
│ │ │ └── version.sh
│ │ ├── mzx-updates.sh
│ │ └── mzx-upload.sh
│ ├── deps/
│ │ ├── Makefile
│ │ ├── Makefile.djgpp.in
│ │ ├── Makefile.linux-msan.in
│ │ ├── Makefile.macos.in
│ │ ├── Makefile.mingw.in
│ │ ├── Makefile.xcode.in
│ │ ├── README.md
│ │ ├── fix-vorbis-1.3.7-build-framework.patch
│ │ └── panther_SDL2_fixes.patch
│ └── pkg/
│ ├── README.md
│ ├── alpine/
│ │ └── APKBUILD
│ ├── archlinux/
│ │ ├── PKGBUILD.template
│ │ └── update-pkgbuild.sh
│ ├── flatpak/
│ │ └── com.digitalmzx.MegaZeux.yml
│ ├── macports/
│ │ └── Portfile
│ ├── nix/
│ │ └── default.nix
│ └── voidlinux/
│ ├── template
│ └── update
├── src/
│ ├── Makefile.in
│ ├── SDLmzx.h
│ ├── about.c
│ ├── about.h
│ ├── audio/
│ │ ├── audio.c
│ │ ├── audio.h
│ │ ├── audio_mikmod.c
│ │ ├── audio_mikmod.h
│ │ ├── audio_modplug.cpp
│ │ ├── audio_modplug.h
│ │ ├── audio_openmpt.c
│ │ ├── audio_openmpt.h
│ │ ├── audio_pcs.c
│ │ ├── audio_pcs.h
│ │ ├── audio_reality.cpp
│ │ ├── audio_reality.h
│ │ ├── audio_sdl.c
│ │ ├── audio_struct.h
│ │ ├── audio_vorbis.c
│ │ ├── audio_vorbis.h
│ │ ├── audio_wav.c
│ │ ├── audio_wav.h
│ │ ├── audio_xmp.c
│ │ ├── audio_xmp.h
│ │ ├── driver_sdl3.c
│ │ ├── ext.c
│ │ ├── ext.h
│ │ ├── sampled_stream.cpp
│ │ ├── sampled_stream.h
│ │ ├── sfx.c
│ │ └── sfx.h
│ ├── block.c
│ ├── block.h
│ ├── board.c
│ ├── board.h
│ ├── board_struct.h
│ ├── caption.c
│ ├── caption.h
│ ├── compat.h
│ ├── configure.c
│ ├── configure.h
│ ├── const.h
│ ├── core.c
│ ├── core.h
│ ├── core_task.c
│ ├── core_task.h
│ ├── counter.c
│ ├── counter.h
│ ├── counter_struct.h
│ ├── data.c
│ ├── data.h
│ ├── editor/
│ │ ├── Makefile.in
│ │ ├── ansi.c
│ │ ├── ansi.h
│ │ ├── block.c
│ │ ├── block.h
│ │ ├── board.c
│ │ ├── board.h
│ │ ├── buffer.c
│ │ ├── buffer.h
│ │ ├── buffer_struct.h
│ │ ├── char_ed.c
│ │ ├── char_ed.h
│ │ ├── clipboard.h
│ │ ├── clipboard_carbon.c
│ │ ├── clipboard_cocoa.m
│ │ ├── clipboard_null.c
│ │ ├── clipboard_sdl2.c
│ │ ├── clipboard_win32.c
│ │ ├── clipboard_x11.c
│ │ ├── configure.c
│ │ ├── configure.h
│ │ ├── debug.c
│ │ ├── debug.h
│ │ ├── edit.c
│ │ ├── edit.h
│ │ ├── edit_di.c
│ │ ├── edit_di.h
│ │ ├── edit_export.c
│ │ ├── edit_export.h
│ │ ├── edit_menu.c
│ │ ├── edit_menu.h
│ │ ├── fill.c
│ │ ├── fill.h
│ │ ├── graphics.c
│ │ ├── graphics.h
│ │ ├── macro.c
│ │ ├── macro.h
│ │ ├── macro_struct.h
│ │ ├── pal_ed.c
│ │ ├── pal_ed.h
│ │ ├── param.c
│ │ ├── param.h
│ │ ├── robo_debug.c
│ │ ├── robo_debug.h
│ │ ├── robo_ed.c
│ │ ├── robo_ed.h
│ │ ├── robot.c
│ │ ├── robot.h
│ │ ├── select.c
│ │ ├── select.h
│ │ ├── sfx_edit.c
│ │ ├── sfx_edit.h
│ │ ├── stringsearch.c
│ │ ├── stringsearch.h
│ │ ├── undo.c
│ │ ├── undo.h
│ │ ├── window.c
│ │ ├── window.h
│ │ ├── world.c
│ │ └── world.h
│ ├── error.c
│ ├── error.h
│ ├── event.c
│ ├── event.h
│ ├── event_sdl.c
│ ├── expr.c
│ ├── expr.h
│ ├── extmem.c
│ ├── extmem.h
│ ├── game.c
│ ├── game.h
│ ├── game_menu.c
│ ├── game_menu.h
│ ├── game_ops.c
│ ├── game_ops.h
│ ├── game_player.c
│ ├── game_player.h
│ ├── game_update.c
│ ├── game_update.h
│ ├── game_update_board.c
│ ├── graphics.c
│ ├── graphics.h
│ ├── hashtable.h
│ ├── helpsys.c
│ ├── helpsys.h
│ ├── idarray.c
│ ├── idarray.h
│ ├── idput.c
│ ├── idput.h
│ ├── intake.c
│ ├── intake.h
│ ├── intake_num.c
│ ├── intake_num.h
│ ├── io/
│ │ ├── bitstream.h
│ │ ├── fsafeopen.c
│ │ ├── fsafeopen.h
│ │ ├── memfile.h
│ │ ├── path.c
│ │ ├── path.h
│ │ ├── vfile.h
│ │ ├── vfs.c
│ │ ├── vfs.h
│ │ ├── vio.c
│ │ ├── vio.h
│ │ ├── vio_no_vfs.c
│ │ ├── vio_posix.h
│ │ ├── vio_volume.h
│ │ ├── vio_win32.h
│ │ ├── zip.c
│ │ ├── zip.h
│ │ ├── zip_deflate.h
│ │ ├── zip_deflate64.h
│ │ ├── zip_dict.h
│ │ ├── zip_implode.h
│ │ ├── zip_reduce.h
│ │ ├── zip_shrink.h
│ │ ├── zip_stream.c
│ │ └── zip_stream.h
│ ├── keysym.h
│ ├── legacy_board.c
│ ├── legacy_board.h
│ ├── legacy_rasm.c
│ ├── legacy_rasm.h
│ ├── legacy_robot.c
│ ├── legacy_robot.h
│ ├── legacy_world.c
│ ├── legacy_world.h
│ ├── main.c
│ ├── memcasecmp.h
│ ├── mzm.c
│ ├── mzm.h
│ ├── network/
│ │ ├── DNS.cpp
│ │ ├── DNS.hpp
│ │ ├── HTTPHost.cpp
│ │ ├── HTTPHost.hpp
│ │ ├── Host.cpp
│ │ ├── Host.hpp
│ │ ├── Manifest.cpp
│ │ ├── Manifest.hpp
│ │ ├── Scoped.hpp
│ │ ├── Socket.cpp
│ │ ├── Socket.hpp
│ │ ├── network.cpp
│ │ ├── network.h
│ │ ├── server.cpp
│ │ ├── sha256.c
│ │ └── sha256.h
│ ├── nostdc++.cpp
│ ├── old/
│ │ ├── legacy_save.c
│ │ ├── legacy_save.h
│ │ └── render_layer_code.h
│ ├── platform.h
│ ├── platform_attribute.h
│ ├── platform_dummy.c
│ ├── platform_endian.h
│ ├── platform_sdl.c
│ ├── platform_time.c
│ ├── pngops.c
│ ├── pngops.h
│ ├── rasm.c
│ ├── rasm.h
│ ├── render.c
│ ├── render.h
│ ├── render_egl.c
│ ├── render_egl.h
│ ├── render_gl.c
│ ├── render_gl.h
│ ├── render_gl1.c
│ ├── render_gl2.c
│ ├── render_glsl.c
│ ├── render_gp2x.c
│ ├── render_layer.cpp
│ ├── render_layer.h
│ ├── render_layer_code.hpp
│ ├── render_layer_common.hpp
│ ├── render_sdl.c
│ ├── render_sdl.h
│ ├── render_sdlaccel.c
│ ├── render_soft.c
│ ├── render_softscale.c
│ ├── render_yuv.c
│ ├── renderers.h
│ ├── robot.c
│ ├── robot.h
│ ├── robot_struct.h
│ ├── run_robot.c
│ ├── run_stubs.c
│ ├── run_stubs.h
│ ├── scrdisp.c
│ ├── scrdisp.h
│ ├── settings.c
│ ├── settings.h
│ ├── sprite.c
│ ├── sprite.h
│ ├── sprite_struct.h
│ ├── str.c
│ ├── str.h
│ ├── thread_debug.h
│ ├── thread_dummy.h
│ ├── thread_pthread.h
│ ├── thread_sdl.h
│ ├── thread_win32.h
│ ├── updater.cpp
│ ├── updater.h
│ ├── util.c
│ ├── util.h
│ ├── utils/
│ │ ├── Makefile.in
│ │ ├── ccv.c
│ │ ├── checkres.c
│ │ ├── downver.c
│ │ ├── hlp2html.c
│ │ ├── hlp2txt.c
│ │ ├── image_common.h
│ │ ├── image_file.c
│ │ ├── image_file.h
│ │ ├── image_gif.c
│ │ ├── image_gif.h
│ │ ├── png2smzx.c
│ │ ├── smzxconv.c
│ │ ├── smzxconv.h
│ │ ├── txt2hlp.c
│ │ ├── uthash.h
│ │ ├── utils_alloc.h
│ │ ├── y4m.c
│ │ ├── y4m.h
│ │ └── y4m2smzx.c
│ ├── window.c
│ ├── window.h
│ ├── world.c
│ ├── world.h
│ ├── world_format.h
│ ├── world_struct.h
│ └── yuv.h
├── testworlds/
│ ├── 1.00/
│ │ ├── 000 Format.mzx
│ │ ├── 000 Format.txt
│ │ ├── 001 Locked.mzx
│ │ ├── 001 Locked.txt
│ │ ├── 002 Robo-P Convert.mzx
│ │ ├── 002 Robo-P Convert.txt
│ │ ├── 003 Char Escapes.mzx
│ │ ├── 003 Char Escapes.txt
│ │ ├── 004 cur_prog_line.mzx
│ │ ├── 004 cur_prog_line.txt
│ │ ├── 005 bad cur_prog_line.mzx
│ │ ├── 005 bad cur_prog_line.txt
│ │ ├── 006 firewalker_dur.mzx
│ │ ├── 006 firewalker_dur.txt
│ │ ├── 007 wind_dur.mzx
│ │ ├── 007 wind_dur.txt
│ │ ├── 008 slimeblob.mzx
│ │ ├── 008 slimeblob.txt
│ │ ├── 009 scan.mzx
│ │ ├── 009 scan.txt
│ │ ├── 010 rel counters copy.mzx
│ │ ├── 010 rel counters copy.txt
│ │ ├── 011 Entrances.mzx
│ │ ├── 011 Entrances.txt
│ │ ├── 012 TELEPORT skip.mzx
│ │ ├── 012 TELEPORT skip.txt
│ │ ├── 013 Robo-P Color Param.mzx
│ │ ├── 013 Robo-P Color Param.txt
│ │ ├── 014 Tiger Intel. Movement.mzx
│ │ └── 014 Tiger Intel. Movement.txt
│ ├── 2.51/
│ │ ├── 000 Swap Test.mzx
│ │ ├── 000 Swap Test.txt
│ │ ├── 001 Copy No-Restart.mzx
│ │ ├── 001 Copy No-Restart.txt
│ │ ├── 002 Shoot No-Cycle.mzx
│ │ ├── 002 Shoot No-Cycle.txt
│ │ ├── 003 Endgame Teleport.mzx
│ │ ├── 003 Endgame Teleport.txt
│ │ ├── 004 Entrances.mzx
│ │ ├── 004 Entrances.txt
│ │ ├── 005 COPY player thisx.mzx
│ │ ├── 005 COPY player thisx.txt
│ │ ├── 006 ZAP RESTORE.mzx
│ │ ├── 006 ZAP RESTORE.txt
│ │ ├── 007 LOCAL.mzx
│ │ ├── 007 LOCAL.txt
│ │ ├── 008 Null Boards.mzx
│ │ ├── 008 Null Boards.txt
│ │ ├── 009 Shark Goop.mzx
│ │ ├── 009 Shark Goop.txt
│ │ ├── 010 INPUT STRING.MZX
│ │ ├── 010 INPUT STRING.txt
│ │ ├── 011 Bad Message Row.mzx
│ │ ├── 011 Bad Message Row.txt
│ │ ├── 012 Custom SFX.mzx
│ │ ├── 012 Custom SFX.txt
│ │ ├── 013 slimeblob.mzx
│ │ ├── 013 slimeblob.txt
│ │ ├── 014 scan.mzx
│ │ ├── 014 scan.txt
│ │ ├── 015 rel counters copy.mzx
│ │ ├── 015 rel counters copy.txt
│ │ ├── 016 IF ALIGNEDROBOT.mzx
│ │ ├── 016 IF ALIGNEDROBOT.txt
│ │ ├── 017 TELEPORT noskip.mzx
│ │ ├── 017 TELEPORT noskip.txt
│ │ ├── 018 Robotic Color Param.mzx
│ │ ├── 018 Robotic Color Param.txt
│ │ ├── 019 Tiger Intel. Movement.mzx
│ │ └── 019 Tiger Intel. Movement.txt
│ ├── 2.51s1/
│ │ ├── 001 LOCAL.MZX
│ │ └── 001 LOCAL.txt
│ ├── 2.60/
│ │ ├── 001 SEND Lock.mzx
│ │ ├── 001 SEND Lock.txt
│ │ ├── 002 Label Cycle-Ending.mzx
│ │ ├── 002 Label Cycle-Ending.txt
│ │ ├── 003 Robotic Color Param.mzx
│ │ └── 003 Robotic Color Param.txt
│ ├── 2.62/
│ │ ├── 001 SET string INPUT.MZX
│ │ └── 001 SET string INPUT.txt
│ ├── 2.65/
│ │ ├── 001 IF ANY.mzx
│ │ ├── 002 GOSTACK.MZX
│ │ ├── 003 SPR_NUM.mzx
│ │ ├── 003 SPR_NUM.txt
│ │ ├── 004 Static Sprite Collision.mzx
│ │ ├── 004 Static Sprite Collision.txt
│ │ ├── 005 IF ALIGNEDROBOT.mzx
│ │ └── 005 IF ALIGNEDROBOT.txt
│ ├── 2.69/
│ │ ├── 001 SET &$string&.mzx
│ │ └── 002 String in expression.mzx
│ ├── 2.69c/
│ │ ├── 001 vlayer.mzx
│ │ ├── 002 COPY BLOCK $string.mzx
│ │ └── 003 vlayer copy player.mzx
│ ├── 2.70/
│ │ ├── 001 BOARD_COLOR No-bleed.mzx
│ │ ├── 002 LOAD_ROBOT.mzx
│ │ ├── 003 SPR_NUM.mzx
│ │ ├── 004 Terminated Str Cmp.mzx
│ │ ├── 005 Robotic Color Param.mzx
│ │ └── 005 Robotic Color Param.txt
│ ├── 2.80/
│ │ ├── 001 IF ANY.mzx
│ │ ├── 002 Copy Restart.mzx
│ │ ├── 003 Go Stack.mzx
│ │ ├── 004 Autodecrypt.mzx
│ │ ├── 005 SEND No-Lock.mzx
│ │ ├── 006 BOARD_COLOR Bleed.mzx
│ │ ├── 007 Endgame Teleport.mzx
│ │ ├── 008 set counter str.mzx
│ │ ├── 009 FWRITE String.mzx
│ │ ├── 010 Robot position.mzx
│ │ ├── 011 LOCAL.mzx
│ │ ├── 012 BYTE 14.mzx
│ │ ├── 013 Robot Stack.mzx
│ │ ├── 014 Label Not Cycle-Ending.mzx
│ │ ├── 015 INPUT STRING Expr.mzx
│ │ ├── 016 IF ALIGNEDROBOT.mzx
│ │ ├── 017 Robotic Color Param.mzx
│ │ ├── 018 out-of-bounds idput.mzx
│ │ ├── 019 Tiger Intel. Movement.mzx
│ │ └── d01 Char ID 255.mzx
│ ├── 2.81/
│ │ ├── 001 VLAYER_SIZE.mzx
│ │ ├── 002 String Splice Assignment.mzx
│ │ ├── b00 SAVE_GAME pos.mzx
│ │ ├── b01 SAVE_GAME ZAP.mzx
│ │ ├── e01 Expressions.mzx
│ │ └── e02 Hex Interpolation.mzx
│ ├── 2.82/
│ │ └── b01 FWRITE String.mzx
│ ├── 2.83/
│ │ └── 001 Shoot Cycle.mzx
│ ├── 2.84/
│ │ ├── 001 MZM3 size.mzx
│ │ ├── 002 Load 2.84 Save.mzx
│ │ ├── 003 COPY prefix.mzx
│ │ ├── 004 Arithmetic Rsh.mzx
│ │ ├── 005 Builtin Sub.mzx
│ │ ├── 006 MZX_SPEED.mzx
│ │ ├── 007 Delimiters.mzx
│ │ ├── 008 ARCTAN.mzx
│ │ ├── 009 set random.mzx
│ │ ├── 010 MIN MAX.mzx
│ │ ├── 011 LOAD_ROBOT spaces.mzx
│ │ ├── b01 Future MZM.mzx
│ │ └── c01 global color.mzx
│ ├── 2.90/
│ │ ├── 000 Format.mzx
│ │ ├── 001 Rearchive.mzx
│ │ ├── 002 Data Descriptor.mzx
│ │ ├── 003 Go Stack.mzx
│ │ ├── 004 GOOP_WALK.mzx
│ │ ├── 005 Reset Entry.mzx
│ │ ├── 006 Asset Entry.mzx
│ │ ├── 007 Sensor Push.mzx
│ │ ├── 008 Board ext chars.mzx
│ │ ├── 009 MOD_NAME Fail.mzx
│ │ ├── 010 SAM-WAV Translate.mzx
│ │ ├── 011 LOAD CHAR SET str.mzx
│ │ ├── 012 LOAD PALETTE str.mzx
│ │ ├── 013 MZM str.mzx
│ │ ├── 014 Title Reset Entry.mzx
│ │ ├── 015 No Reset same board.mzx
│ │ ├── 016 Static Sprite Collision.mzx
│ │ ├── 017 Robotic Color Param.mzx
│ │ ├── b01 Counter Ineq.mzx
│ │ ├── d00 Nested Ternary.mzx
│ │ └── d01 Native SAM.mzx
│ ├── 2.91/
│ │ ├── 000 Format.mzx
│ │ ├── 001 Copy Block Splice.mzx
│ │ ├── 002 Wildcards.mzx
│ │ ├── 003 ccheck3 clip.mzx
│ │ ├── 004 MOD_LENGTH.mzx
│ │ ├── 005 String Valid.mzx
│ │ ├── 006 String Neg Off.mzx
│ │ ├── 007 String Idx Enh.mzx
│ │ ├── 008 LOAD_COUNTERS.mzx
│ │ ├── 009 Sprite Bounds.mzx
│ │ ├── 010 saved vlayer.mzx
│ │ ├── 011 remap vlayer.mzx
│ │ ├── b00 String Inequlty.mzx
│ │ ├── c00 Ternary Expr.mzx
│ │ ├── c01 fsafetranslate.mzx
│ │ ├── c02 st_load.mzx
│ │ ├── c03 slow_down.mzx
│ │ ├── e00 Board ext chars.mzx
│ │ ├── e01 Str compare.mzx
│ │ ├── g00 MZM str length.mzx
│ │ ├── g01 SLOW TIME.mzx
│ │ └── h00 FWRITEn.mzx
│ ├── 2.92/
│ │ ├── 001 FWRITE String.mzx
│ │ ├── 002 RAD.mzx
│ │ ├── 003 SPR#_OFF read.mzx
│ │ ├── 004 Robot position.mzx
│ │ ├── 005 FREAD_LENGTH.mzx
│ │ ├── 006 MOD_LOOPSTART.mzx
│ │ ├── 007 SAVE_ROBOTn str.mzx
│ │ ├── 008 SPR_NUM.mzx
│ │ ├── 100 IF &$string&.mzx
│ │ ├── c01 Ternary idents.mzx
│ │ ├── c02 BYTE 14.mzx
│ │ ├── d01 fsafetranslate SFN.mzx
│ │ ├── d02 SMZX ccheck3.mzx
│ │ ├── g01 LOAD CHAR SET crash.mzx
│ │ ├── g02 String MZM Size.mzx
│ │ ├── g03 Reset Missing Temp.mzx
│ │ ├── g04 set random range.mzx
│ │ ├── g05 divide INT_MIN -1.mzx
│ │ ├── g06 Bad Current Board.290.mzx
│ │ ├── g07 Bad Current Board.284.mzx
│ │ ├── g08 Bad Board IDs.mzx
│ │ ├── g09 Bad Saved Pos.290.mzx
│ │ ├── g10 Bad Saved Pos.284.mzx
│ │ ├── g11 Bad cur_prog_line.290.mzx
│ │ ├── g12 Bad cur_prog_line.284.mzx
│ │ ├── g13 Bad stack pointer.290.mzx
│ │ ├── g14 Bad stack pointer.284.mzx
│ │ ├── g15 Bad stack size.284.mzx
│ │ ├── g16 Bad Message Row.mzx
│ │ ├── g17 Bad stack frame.290.mzx
│ │ ├── g18 Bad stack frame.284.mzx
│ │ ├── g19 Invalid Robotic Item.mzx
│ │ └── g20 Invalid Condition.mzx
│ ├── 2.93/
│ │ ├── 000 Format.mzx
│ │ ├── 001 Custom SFX.mzx
│ │ ├── 002 Custom SFX (old).mzx
│ │ ├── 003 FWRITE Mode Save Test.mzx
│ │ ├── 004 MZX Pal in SMZX Mode.mzx
│ │ ├── 005 Viewport Counters.mzx
│ │ ├── 006 DATE_WEEKDAY.mzx
│ │ ├── 007 playerdied.mzx
│ │ ├── 008 Dragon Random.mzx
│ │ ├── 009 Reset same board off.mzx
│ │ ├── 010 Reset same board on.mzx
│ │ ├── 011 SPRn_OFFONEXIT.mzx
│ │ ├── 012 Static Sprite Collision.mzx
│ │ ├── b01 String Splice Assignment.mzx
│ │ ├── b02 String Splice FREAD Crash.mzx
│ │ ├── b03 IF ALIGNEDROBOT.mzx
│ │ ├── c01 CHANGE OVERLAY immediate.mzx
│ │ └── e01 DOS chars devices.mzx
│ ├── 2.XX/
│ │ └── 000 MOD Formats.mzx
│ ├── README.md
│ ├── data/
│ │ ├── LOCKED.MZX
│ │ ├── README.md
│ │ ├── audio/
│ │ │ ├── 1s.ogg
│ │ │ ├── 1s_badtag.ogg
│ │ │ ├── CRYSTALS.WOW
│ │ │ ├── CV_BOSS.MOD
│ │ │ ├── GBUSTERS.MOD
│ │ │ ├── PAIN.SAM
│ │ │ ├── SX-shrine.it
│ │ │ ├── Shayde - Canon in D.rad
│ │ │ ├── Void - Dystopia.rad
│ │ │ ├── XON_BATT.AMF
│ │ │ ├── analog.ult
│ │ │ ├── basket.s3m
│ │ │ ├── bit_loader.xm
│ │ │ ├── black_box.okt
│ │ │ ├── bluesy.mod
│ │ │ ├── chip_happy.med
│ │ │ ├── crystals.669
│ │ │ ├── desecret.mod
│ │ │ ├── drivin.gdm
│ │ │ ├── ekorren.mod
│ │ │ ├── fiercest.amf
│ │ │ ├── georythm.stm
│ │ │ ├── gidion graveland.mod
│ │ │ ├── jul-paaske.mod
│ │ │ ├── mindflux.rad
│ │ │ ├── misimprm.mod
│ │ │ ├── moods-yeah.med
│ │ │ ├── new age.mod
│ │ │ ├── no_tears.med
│ │ │ ├── popcorn.dsm
│ │ │ ├── ref 8.mod
│ │ │ ├── rip4.rad
│ │ │ ├── s0d.mod
│ │ │ ├── soap bubble.mod
│ │ │ ├── something's amiss.mtm
│ │ │ ├── the rain in the ruin.far
│ │ │ ├── wizardry.med
│ │ │ └── xxy_cursor.ogg
│ │ ├── bad_cur_prog_line.284.sav
│ │ ├── bad_cur_prog_line.290.sav
│ │ ├── bad_current_board.284.sav
│ │ ├── bad_current_board.290.sav
│ │ ├── bad_saved_pos_board.284.sav
│ │ ├── bad_saved_pos_board.290.sav
│ │ ├── bad_stack_frame.284.sav
│ │ ├── bad_stack_frame.290.sav
│ │ ├── bad_stack_pointer.284.sav
│ │ ├── bad_stack_pointer.290.sav
│ │ ├── bad_stack_size.284.sav
│ │ ├── futer.mzm
│ │ ├── loadassetentryA.chr
│ │ ├── loadassetentryA.pal
│ │ ├── loadassetentryB.chr
│ │ ├── loadassetentryB.pal
│ │ ├── reset_entry_no_temp.sav
│ │ ├── saved.284c.sav
│ │ └── spaces.txt
│ ├── run.sh
│ └── temp/
│ └── README.md
├── unit/
│ ├── Makefile.in
│ ├── Unit.cpp
│ ├── Unit.hpp
│ ├── UnitIO.cpp
│ ├── UnitIO.hpp
│ ├── align.cpp
│ ├── audio/
│ │ ├── mixer/
│ │ │ ├── CUBIC_mm.raw
│ │ │ ├── CUBIC_mm_dyn.raw
│ │ │ ├── CUBIC_ms.raw
│ │ │ ├── CUBIC_ms_dyn.raw
│ │ │ ├── CUBIC_sm.raw
│ │ │ ├── CUBIC_sm_dyn.raw
│ │ │ ├── CUBIC_ss.raw
│ │ │ ├── CUBIC_ss_dyn.raw
│ │ │ ├── FLAT_mm.raw
│ │ │ ├── FLAT_mm_dyn.raw
│ │ │ ├── FLAT_ms.raw
│ │ │ ├── FLAT_ms_dyn.raw
│ │ │ ├── FLAT_sm.raw
│ │ │ ├── FLAT_sm_dyn.raw
│ │ │ ├── FLAT_ss.raw
│ │ │ ├── FLAT_ss_dyn.raw
│ │ │ ├── LINEAR_mm.raw
│ │ │ ├── LINEAR_mm_dyn.raw
│ │ │ ├── LINEAR_ms.raw
│ │ │ ├── LINEAR_ms_dyn.raw
│ │ │ ├── LINEAR_sm.raw
│ │ │ ├── LINEAR_sm_dyn.raw
│ │ │ ├── LINEAR_ss.raw
│ │ │ ├── LINEAR_ss_dyn.raw
│ │ │ ├── NEAREST_mm.raw
│ │ │ ├── NEAREST_mm_dyn.raw
│ │ │ ├── NEAREST_ms.raw
│ │ │ ├── NEAREST_ms_dyn.raw
│ │ │ ├── NEAREST_sm.raw
│ │ │ ├── NEAREST_sm_dyn.raw
│ │ │ ├── NEAREST_ss.raw
│ │ │ ├── NEAREST_ss_dyn.raw
│ │ │ ├── m.raw
│ │ │ └── s.raw
│ │ └── mixer.cpp
│ ├── configure.cpp
│ ├── editor/
│ │ └── stringsearch.cpp
│ ├── expr.cpp
│ ├── intake.cpp
│ ├── io/
│ │ ├── bitstream.cpp
│ │ ├── data/
│ │ │ ├── CN_S.CHR
│ │ │ ├── CN_S.CHR.deflate
│ │ │ ├── CN_S.CHR.implode
│ │ │ ├── CN_S.CHR.reduce1
│ │ │ ├── CN_S.CHR.reduce2
│ │ │ ├── CN_S.CHR.reduce3
│ │ │ ├── CN_S.CHR.reduce4
│ │ │ ├── CN_S.CHR.shrink
│ │ │ ├── CT_LEVEL.MOD
│ │ │ ├── FREAKSOF.MZX
│ │ │ ├── ct_level.deflate
│ │ │ ├── ct_level.deflate64
│ │ │ ├── ct_level.implode
│ │ │ ├── ct_level.reduce1
│ │ │ ├── ct_level.reduce2
│ │ │ ├── ct_level.reduce3
│ │ │ ├── ct_level.reduce4
│ │ │ ├── ct_level.shrink
│ │ │ ├── dch1.deflate
│ │ │ ├── dch1.deflate64
│ │ │ ├── dch1.implode
│ │ │ ├── dch1.reduce1
│ │ │ ├── dch1.reduce2
│ │ │ ├── dch1.reduce3
│ │ │ ├── dch1.reduce4
│ │ │ ├── dch1.shrink
│ │ │ ├── dch1.txt
│ │ │ ├── dch1.zip64
│ │ │ ├── freaksof.deflate
│ │ │ ├── freaksof.deflate64
│ │ │ ├── freaksof.implode
│ │ │ ├── freaksof.reduce1
│ │ │ ├── freaksof.reduce2
│ │ │ ├── freaksof.reduce3
│ │ │ ├── freaksof.reduce4
│ │ │ ├── freaksof.shrink
│ │ │ └── zip64/
│ │ │ └── zip64gen.cpp
│ │ ├── memfile.cpp
│ │ ├── path.cpp
│ │ ├── vfs.cpp
│ │ ├── vio.cpp
│ │ └── zip.cpp
│ ├── memcasecmp.cpp
│ ├── network/
│ │ ├── Manifest.cpp
│ │ ├── data/
│ │ │ ├── 1.txt
│ │ │ ├── 2.txt
│ │ │ └── manifest.txt
│ │ └── sha256.cpp
│ ├── render.cpp
│ ├── sfx.cpp
│ ├── thread.cpp
│ ├── thread.hpp
│ ├── thread_win32.cpp
│ ├── utils/
│ │ ├── image_file/
│ │ │ ├── farbfeld.ff
│ │ │ ├── p1.pbm
│ │ │ ├── p2.pgm
│ │ │ ├── p2_18.pgm
│ │ │ ├── p2_64.pgm
│ │ │ ├── p3.ppm
│ │ │ ├── p3_18.ppm
│ │ │ ├── p3_64.ppm
│ │ │ ├── p4.pbm
│ │ │ ├── p5.pgm
│ │ │ ├── p5_18.pgm
│ │ │ ├── p5_64.pgm
│ │ │ ├── p6.ppm
│ │ │ ├── p6_18.ppm
│ │ │ ├── p6_64.ppm
│ │ │ ├── p7_gs.pam
│ │ │ ├── p7_gs18.pam
│ │ │ ├── p7_gs64.pam
│ │ │ ├── p7_gsa.pam
│ │ │ ├── p7_gsa18.pam
│ │ │ ├── p7_gsa64.pam
│ │ │ ├── p7_rgb.pam
│ │ │ ├── p7_rgb18.pam
│ │ │ ├── p7_rgb64.pam
│ │ │ ├── p7_rgba.pam
│ │ │ ├── p7_rgba18.pam
│ │ │ ├── p7_rgba64.pam
│ │ │ ├── raw_gs.raw
│ │ │ ├── raw_gsa.raw
│ │ │ ├── raw_rgb.raw
│ │ │ ├── raw_rgba.raw
│ │ │ ├── tga_15bpp.tga
│ │ │ ├── tga_16bpp.tga
│ │ │ ├── tga_16bpp_rle.tga
│ │ │ ├── tga_16bpp_ttb.tga
│ │ │ ├── tga_16bpp_ttb_rle.tga
│ │ │ ├── tga_24bpp.tga
│ │ │ ├── tga_24bpp_rle.tga
│ │ │ ├── tga_24bpp_ttb.tga
│ │ │ ├── tga_24bpp_ttb_rle.tga
│ │ │ ├── tga_32bpp.tga
│ │ │ ├── tga_32bpp_rle.tga
│ │ │ ├── tga_32bpp_rtl.tga
│ │ │ ├── tga_32bpp_rtl_ttb.tga
│ │ │ ├── tga_32bpp_ttb.tga
│ │ │ ├── tga_32bpp_ttb_rle.tga
│ │ │ ├── tga_g.tga
│ │ │ ├── tga_g_rle.tga
│ │ │ ├── tga_g_ttb.tga
│ │ │ ├── tga_g_ttb_rle.tga
│ │ │ ├── tga_idx16_32bpp.tga
│ │ │ ├── tga_idx16_32bpp_rle.tga
│ │ │ ├── tga_idx16_32bpp_ttb.tga
│ │ │ ├── tga_idx16_32bpp_ttb_rle.tga
│ │ │ ├── tga_idx8_15bpp.tga
│ │ │ ├── tga_idx8_16bpp.tga
│ │ │ ├── tga_idx8_16bpp_rle.tga
│ │ │ ├── tga_idx8_16bpp_ttb.tga
│ │ │ ├── tga_idx8_16bpp_ttb_rle.tga
│ │ │ ├── tga_idx8_24bpp.tga
│ │ │ ├── tga_idx8_24bpp_rle.tga
│ │ │ ├── tga_idx8_24bpp_ttb.tga
│ │ │ ├── tga_idx8_24bpp_ttb_rle.tga
│ │ │ ├── tga_idx8_32bpp.tga
│ │ │ ├── tga_idx8_32bpp_rle.tga
│ │ │ ├── tga_idx8_32bpp_ttb.tga
│ │ │ └── tga_idx8_32bpp_ttb_rle.tga
│ │ └── image_file.cpp
│ └── world.cpp
├── valgrind.supp
└── version.inc
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
.gitignore merge=union text
docs/changelog.txt merge=union text
docs/cycles_and_commands.txt text
docs/idle_direction_oddities.txt text
docs/macro.txt text
docs/port.txt text
docs/push_and_transport.txt text
docs/WIPHelp.txt text
unit/io/data/*.txt text eol=lf
config.txt text
================================================
FILE: .github/workflows/main.yml
================================================
name: Regression tests
env:
MZXDEPS_DEBIAN_SDL2: "zlib1g-dev libpng-dev libogg-dev libvorbis-dev libsdl2-dev"
MZXDEPS_DEBIAN_MISC: "libsdl1.2-dev libegl1-mesa-dev libmikmod-dev libopenmpt-dev"
MZXDEPS_MACOS: "libpng libogg libvorbis sdl2"
MZX_MAKE: "make -j4"
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
#
# Platform variants and distribution packages.
#
unix:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix --enable-release --enable-sdlaccel
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test
- name: Install
run: sudo $MZX_MAKE install V=1
- name: Check install
run: command -v megazeux && [ -f "/usr/share/licenses/megazeux/LICENSE" ] && [ -f "/etc/megazeux-config" ]
- name: Uninstall
run: sudo $MZX_MAKE uninstall V=1
- name: Check uninstall
run: true && [ ! -f "/usr/bin/megazeux" ] && [ ! -f "/usr/share/licenses/megazeux/LICENSE" ] && [ ! -f "/etc/megazeux-config" ]
- name: Package source .tar.xz
run: make source
unix-portable:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix-devel --enable-release --enable-sdlaccel
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test
- name: Package linux-amd64 .zip
run: make archive
unix-misc:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2 $MZXDEPS_DEBIAN_MISC
- uses: actions/checkout@v4
- name: Configure (SDL 1.2)
run: ./config.sh --platform unix-devel --enable-release --enable-sdl1
- name: Build (SDL 1.2)
run: $MZX_MAKE
- name: Run tests (SDL 1.2)
run: $MZX_MAKE test
- name: Distclean (SDL 1.2)
run: $MZX_MAKE distclean
- name: Configure (EGL/X11)
run: ./config.sh --platform unix-devel --enable-release --disable-sdl --enable-egl
- name: Build (EGL/X11)
run: $MZX_MAKE
# Note: EGL mzxrun builds can't run headless, unit tests only.
- name: Run tests (EGL/X11)
run: $MZX_MAKE unit
- name: Distclean (EGL/X11)
run: $MZX_MAKE distclean
- name: Configure (ModPlug)
run: ./config.sh --platform unix-devel --enable-release --enable-modplug
- name: Build (Modplug)
run: $MZX_MAKE
- name: Run tests (Modplug)
run: $MZX_MAKE test
- name: Distclean (Modplug)
run: $MZX_MAKE distclean
- name: Configure (MikMod)
run: ./config.sh --platform unix-devel --enable-release --enable-mikmod
- name: Build (MikMod)
run: $MZX_MAKE
- name: Run tests (MikMod)
run: $MZX_MAKE test
- name: Distclean (MikMod)
run: $MZX_MAKE distclean
- name: Configure (OpenMPT)
run: ./config.sh --platform unix-devel --enable-release --enable-openmpt
- name: Build (OpenMPT)
run: $MZX_MAKE
- name: Run tests (OpenMPT)
run: $MZX_MAKE test
- name: Distclean (OpenMPT)
run: $MZX_MAKE distclean
- name: Configure (debug)
run: ./config.sh --platform unix-devel --disable-release --enable-trace --enable-fps
- name: Build (debug)
run: $MZX_MAKE
- name: Run tests (debug)
run: $MZX_MAKE test
- name: Distclean (debug)
run: $MZX_MAKE distclean
darwin-arm64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install $MZXDEPS_MACOS
- name: Configure (darwin-devel)
run: ./config.sh --platform darwin-devel --prefix /opt/homebrew --enable-release --enable-sdlaccel
- name: Build (darwin-devel)
run: $MZX_MAKE
- name: Run tests (darwin-devel)
run: $MZX_MAKE test
darwin-x86_64:
runs-on: macos-26-intel
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install $MZXDEPS_MACOS
- name: Configure (darwin-devel)
run: ./config.sh --platform darwin-devel --prefix /usr/local --enable-release --enable-sdlaccel
- name: Build (darwin-devel)
run: $MZX_MAKE
- name: Run tests (darwin-devel)
run: $MZX_MAKE test
MSYS2-MINGW64:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Setup msys2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
base-devel git zip
mingw-w64-x86_64-gcc mingw-w64-x86_64-zlib mingw-w64-x86_64-libpng
mingw-w64-x86_64-libogg mingw-w64-x86_64-libvorbis mingw-w64-x86_64-SDL2
- uses: actions/checkout@v4
- name: Configure x64
run: ./config.sh --platform win64 --enable-release
- name: Build x64
run: $MZX_MAKE
- name: Test x64
run: $MZX_MAKE test
- name: Package x64 .zip
run: make archive
MSYS2-MINGW32:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Setup msys2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: true
install: >-
base-devel git zip
mingw-w64-i686-gcc mingw-w64-i686-zlib mingw-w64-i686-libpng
mingw-w64-i686-libogg mingw-w64-i686-libvorbis mingw-w64-i686-SDL2
- uses: actions/checkout@v4
- name: Configure x86
run: ./config.sh --platform win32 --enable-release
- name: Build x86
run: $MZX_MAKE
- name: Test x86
run: $MZX_MAKE test
- name: Package x86 .zip
run: make archive
AArch64-Switch:
runs-on: ubuntu-latest
container: devkitpro/devkita64
steps:
- run: echo "PATH=$DEVKITPRO/devkitA64/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure Switch
run: arch/switch/CONFIG.SWITCH
- name: Build Switch
run: $MZX_MAKE
- name: Package Switch .zip
run: make archive
ARM-3DS:
runs-on: ubuntu-latest
container: devkitpro/devkitarm
steps:
- run: echo "PATH=$DEVKITPRO/devkitARM/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure 3DS
run: arch/3ds/CONFIG.3DS
- name: Build 3DS
run: $MZX_MAKE
- name: Package 3DS .zip
run: make archive
ARM-NDS:
runs-on: ubuntu-latest
container: devkitpro/devkitarm:20241104
steps:
- run: echo "PATH=$DEVKITPRO/devkitARM/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure NDS
run: arch/nds/CONFIG.NDS
- name: Build NDS
run: $MZX_MAKE
- name: Package NDS .zip
run: make archive
ARM-NDS-BlocksDS:
runs-on: ubuntu-latest
container: skylyrac/blocksds:slim-latest
steps:
- name: Install dependencies
run: apt update && apt install -y --no-install-recommends zip
- name: Install target dependencies
run: wf-pacman -S --noconfirm toolchain-gcc-arm-none-eabi-zlib
- uses: actions/checkout@v4
- name: Configure NDS/BlocksDS
run: arch/nds-blocksds/CONFIG.NDS
- name: Build NDS/BlocksDS
run: $MZX_MAKE
- name: Package NDS/BlocksDS .zip
run: make archive
PowerPC-Wii:
runs-on: ubuntu-latest
container: devkitpro/devkitppc
steps:
- run: echo "PATH=$DEVKITPRO/devkitPPC/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure Wii
run: arch/wii/CONFIG.WII
- name: Build Wii
run: $MZX_MAKE
- name: Package Wii .zip
run: make archive
PowerPC-WiiU:
runs-on: ubuntu-latest
container: devkitpro/devkitppc
steps:
- run: echo "PATH=$DEVKITPRO/devkitPPC/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure Wii U
run: arch/wiiu/CONFIG.WIIU
- name: Build Wii U
run: $MZX_MAKE
- name: Package Wii U .zip
run: make archive
Emscripten-HTML5:
runs-on: ubuntu-latest
steps:
- name: Install Emscripten
uses: mymindstorm/setup-emsdk@v14
with:
version: 4.0.7
# actions-cache-folder: 'emsdk-cache'
- uses: actions/checkout@v4
- name: Configure HTML5
run: arch/emscripten/CONFIG.HTML5
- name: Build HTML5
run: $MZX_MAKE && make build
- name: Package HTML5 .zip
run: make archive
# FIXME: vitasdk hasn't bothered adding SDL3 to the container,
# vdpm and git are missing from the container.
Vita:
runs-on: ubuntu-latest
container: vitasdk/vitasdk
steps:
- name: Install dependencies
run: apk add --no-cache zip
- uses: actions/checkout@v4
- name: Configure Vita
run: arch/psvita/CONFIG.PSVITA --enable-sdl2 --disable-libpng --disable-lto
- name: Build Vita
run: $MZX_MAKE
- name: Package Vita
run: make archive
#
# Sanitizers.
#
AddressSanitizer:
runs-on: ubuntu-latest
env:
CC: clang
CXX: clang++
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix-devel --enable-asan --enable-extram
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test
# Note: requires all non-system/libc calls to be from instrumented libraries.
# For the regression tests, MZX can get away with just zlib.
# SDL calls into uninstrumented functions and is not built at all.
# libpng is temporarily disabled. libogg/libvorbis work with no issue.
MemorySanitizer:
runs-on: ubuntu-latest
env:
CC: clang
CXX: clang++
steps:
- uses: actions/checkout@v4
- name: Fetch dependencies
run: |
(cd scripts/deps;
wget https://github.com/AliceLR/megazeux-dependencies/releases/download/v2.93c-r1/megazeux-dependencies-2.93c-r1-linux-msan-mint22.tar.xz;
tar -xJf megazeux-dependencies-*-linux-msan-mint22.tar.xz)
- name: Configure
run: ./config.sh --platform unix-devel --prefix scripts/deps/linux-msan/x86_64 --enable-msan --disable-sdl --disable-libpng --disable-x11 --enable-extram
- name: Build
run: $MZX_MAKE V=1
- name: Run tests
run: $MZX_MAKE V=1 test
UndefinedBehaviorSanitizer:
runs-on: ubuntu-latest
env:
CC: clang
CXX: clang++
UBSAN_OPTIONS: print_stacktrace=1
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix-devel --enable-ubsan --enable-extram
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test
================================================
FILE: .gitignore
================================================
arch/3ds/*.d
arch/3ds/*.o
arch/3ds/*shbin*
arch/android/deps
arch/android/include
arch/android/project/.eclipse
arch/android/project/.gradle
arch/android/project/.idea
arch/android/project/*.iml
arch/android/project/*.ipr
arch/android/project/app/.cxx
arch/android/project/app/.externalNativeBuild
arch/android/project/app/jni/.gradle
arch/android/project/app/jni/SDL2
arch/android/project/app/jni/lib
arch/android/project/app/jni/libogg
arch/android/project/app/jni/libvorbis
arch/android/project/app/debug/
arch/android/project/app/release/
arch/android/project/app/src/main/res/raw/assets.zip
arch/android/project/app/*.iml
arch/android/project/build
arch/android/project/keystore.properties
arch/android/project/local.properties
arch/djgpp/*.d
arch/djgpp/*.o
arch/dreamcast/*.d
arch/dreamcast/*.o
arch/emscripten/web/mzxrun_web.js*
arch/emscripten/web/node_modules
arch/emscripten/web/package-lock.json
arch/mingw/pefix
arch/mingw/pefix.d
arch/mingw/pefix.exe
arch/mingw/pefix.o
arch/msvc/.vs
arch/msvc/*.user
arch/msvc/Deps/
arch/msvc/MegaZeux.opensdf
arch/msvc/MegaZeux.sdf
arch/msvc/MegaZeux.v12.suo
arch/msvc/obj
arch/msvc/version.h
arch/nds/mzxrun.arm7.elf
arch/nds/protected_palette_bin.c
arch/nds/protected_palette_bin.h
arch/nds/*.S
arch/nds/*.d
arch/nds/*.o
arch/psp/*.d
arch/psp/*.o
arch/psvita/*.d
arch/psvita/*.o
arch/wii/*.d
arch/wii/*.o
arch/xcode/version.h
build
contrib/gdm2s3m/src/.build/
contrib/icons/.build/
contrib/libmodplug/src/.build/
contrib/libxmp/src/.build/
contrib/libxmp/src/win32/.build/
contrib/libxmp/src/loaders/.build/
contrib/unzip/src/.build/
1ST_READ.BIN
boot.dol
Core.exp
Core.ilk
Core.iobj
Core.ipdb
Core.lib
Core.pdb
core.dll
libcore.so
libcore.dylib
EBOOT.PBP
eboot.bin
Editor.exp
Editor.ilk
Editor.iobj
Editor.ipdb
Editor.lib
Editor.map
Editor.pdb
editor.dll
ICON0.PNG
libeditor.so
libeditor.dylib
megazeux-cia.*
megazeux.3dsx
megazeux.bin
megazeux.dol
megazeux.elf
megazeux.exe
megazeux.exp
MegaZeux.ilk
MegaZeux.iobj
MegaZeux.ipdb
MegaZeux.lib
megazeux.nacp
megazeux.nro
megazeux.nso
MegaZeux.pdb
megazeux.rpx
megazeux.smdh
megazeux.velf
megazeux.vpk
/megazeux
mzxrun.3dsx
mzxrun.bin
mzxrun.cia
mzxrun.dol
mzxrun.elf
mzxrun.exe
mzxrun.exp
mzxrun.ilk
mzxrun.iobj
mzxrun.ipdb
mzxrun.js
mzxrun.js.orig.js
mzxrun.js.mem
mzxrun.lib
mzxrun.nacp
mzxrun.nds
mzxrun.nro
mzxrun.nso
mzxrun.pdb
mzxrun.rpx
mzxrun.smdh
mzxrun.velf
mzxrun.vpk
mzxrun.wasm
mzxrun.wasm.map
/mzxrun
PARAM.SFO
param.sfo
platform.inc
SDL.dll
SDL2.dll
src/.build/
src/config.h
src/audio/.build/
src/editor/.build/
src/io/.build/
src/network/.build/
src/utils/.build/
src/utils/ccv.exe
src/utils/ccv
src/utils/checkres.exe
src/utils/checkres
src/utils/downver.exe
src/utils/downver
src/utils/hlp2html.exe
src/utils/hlp2html
src/utils/hlp2txt.exe
src/utils/hlp2txt
src/utils/txt2hlp.exe
src/utils/txt2hlp
src/utils/png2smzx.exe
src/utils/png2smzx
src/utils/y4m2smzx.exe
src/utils/y4m2smzx
src/utils/*.debug
stdout.txt
stderr.txt
Thumbs.db
unit/.build/
unit/audio/.build/
unit/editor/.build/
unit/io/.build/
unit/network/.build/
unit/utils/.build/
/*.js
/*.js.mem
/*.js.orig.js
/*.wasm
/*.wasm.map
*.code-workspace
*.debug
*.mzx
*.sav
*.mzm
*~
.clangd
.vscode
.DS_Store
xcuserdata/
# This MUST go after the *.mzx rule.
!testworlds/*/*.mzx
testworlds/*/backup*
testworlds/backup*
testworlds/log
testworlds/next
testworlds/test
testworlds/temp/*
!testworlds/temp/README.md
!testworlds/data/*
================================================
FILE: .valgrindrc
================================================
--memcheck:leak-check=full
--memcheck:track-origins=yes
--suppressions=valgrind.supp
================================================
FILE: BUILDING.md
================================================
Building MegaZeux
=================
MegaZeux can currently be built for Microsoft Windows, Linux, macOS,
NetBSD, FreeBSD, OpenBSD, Haiku, Amiga OS 4, Android, HTML5, MS-DOS (DJGPP),
NDS, 3DS, Wii, Wii U, Switch, PSP, Vita, Dreamcast, GP2X, and Pandora.
MegaZeux has three buildsystems--the GNU Make buildsystem for building most
ports, the Xcode project (`arch/xcode/`) for development and release builds
on macOS, and the MSVC project (`arch/msvc/`) for testing on Windows. This
document applies primarily to the GNU Make buildsystem.
For architecture specific build instructions, please see `arch/[platform]/README`.
[The DigitalMZX wiki](https://www.digitalmzx.com/wiki/Compiling_MegaZeux) has
more info, particularly for setting up console toolchains.
Requirements
------------
For the GNU Make buildsystem, most versions of these tools from the
past 20 years work with little issue. You should almost always use the
most recent versions available.
- POSIX-compatible base system e.g. Linux, macOS, BSD, MSYS2:
- **GNU coreutils**: <=4.5.3 or newer (packaging MinGW requires `sha256sum`, 6.0+)
- **BusyBox**: <=1.22 or newer (packaging MinGW requires `sha256sum`, 1.14.0+)
- (**BSD** `sha256` or **Perl** `shasum -a256` also works.)
- GNU-compatible C and C++ compilers:
- **GCC**: 3.4 or newer
- **clang/LLVM**
- **GNU binutils** or **LLVM** or equivalent
- **GNU Make**: <=3.79 or newer
- **pkgconf** or **pkg-config** (SDL 3 builds only)
- **zip** or **7za** (packaging only)
- **tar** and **xz** (packaging source only)
- **ImageMagick** 7.0 or newer (rebuilding icons only)
- Older versions may work if `MAGICK=convert` is provided to Make.
- **GraphicsMagick** does not work as a substitute (no parentheses or clone).
Dependencies:
- **SDL** (all ports except DJGPP, NDS, 3DS, Wii, and Dreamcast)
[(link)](https://www.libsdl.org/)
- **SDL 3** (with `--enable-sdl3`)
- **SDL 2** (default)
- **SDL 1.2**: <=1.2.5 or newer (with `--enable-sdl1`)
- Clipboard support for SDL 1.2 in Linux additionally requires X11 headers.
- **zlib**: 1.2.0 or newer
[(link)](https://www.zlib.net/)
- **libpng**: 1.2.3 or newer (or `--disable-libpng`)
[(link)](http://www.libpng.org/pub/png/libpng.html)
- **libogg**: 1.0 or newer (or **stb_vorbis** or `--disable-vorbis`)
[(link)](https://xiph.org/downloads/)
- **libvorbis**: 1.2.2 or newer (or **Tremor** or **stb_vorbis** or `--disable-vorbis`)
[(link)](https://xiph.org/downloads/)
For MinGW, DJGPP, and Darwin (macOS/Mac OS X), plus the Xcode and MSVC projects,
prebuilt dependencies can be found [here](https://github.com/AliceLR/megazeux-dependencies).
See below or the platform-specific README for more info.
Configuring and building
------------------------
All operations must be run within a POSIX-compatible shell environment
such as Bash, BusyBox, ksh, MSYS2 terminal, or similar.
Configure MegaZeux with the script `config.sh` located in the source root:
```sh
# You may need to specify --prefix [dir] or other options.
# For debug builds, omit --enable-release and --enable-lto.
./config.sh --platform [platform] --enable-release --enable-lto
# For a full list of supported options and platforms:
./config.sh
```
Several platforms have shell scripts named `CONFIG.[arch]` located in their
`arch/[platform]/` directory, which will run `config.sh` with appropriate
default configurations.
Compile MegaZeux with GNU Make:
```sh
# Use gmake on NetBSD et al.
# For verbose output, provide V=1. Parallel builds (-j#) are supported.
make
# For some platforms, it's safe to override the compilers if needed.
# (Most platforms that prefer clang will automatically select it.)
CC=clang CXX=clang++ make
```
MegaZeux comes with two regression test systems to verify that MegaZeux works
(for platforms and build environments where executables can be run locally).
The unit tests located in `unit/` are compiled and executed individually.
The test worlds located in `testworlds/` are run together via MZXRun.
```sh
# Perform the unit tests and then run the test worlds. (-j# supported)
make test
# Perform just the unit tests. (-j# supported)
make unit
# Perform just the test worlds.
make testworlds
```
Installing
----------
For Linux/BSD/etc. using the `unix` platform and macOS/Mac OS X using the
`darwin` platform, MegaZeux can be installed to the install root that was
provided to the `--prefix` option. (Note the default install root is `/usr`,
so you may want to explicitly change that to `/usr/local` or similar):
```sh
# As superuser:
make install
# Can be reversed:
make uninstall
```
Packaging
---------
For all other platforms, MegaZeux is typically packaged instead.
MegaZeux's packaging varies from platform to platform.
First, for platforms that don't automatically separate or strip debug info
(mainly MinGW and DJGPP), separate the debug info. (For MinGW, this also runs
the locally compiled tool `arch/mingw/pefix` to strip PE timestamps.)
```sh
make debuglink -j8
```
Package the MegaZeux build into a zip archive. The prepared build directory can
be found at `build/[platform]/` and the archive at `build/dist/[platform]/`:
```sh
make archive
```
To prepare a directory (in `build/[platform]/`) for packaging without archiving
it, this can usually be used instead:
```sh
make build
```
To package a source tarball from a local Git repository:
```sh
make source
```
Platform-specific notes
-----------------------
Check `arch/[platform]/README[.md]` for more detailed platform-specific
information.
### Debian-based distributions
.deb packages can be generated with a single command.
See `debian/README` for more information.
### RPM-based distributions
.rpm packages can be generated with a single command:
```sh
rpmbuild -bb --build-in-place megazeux.spec
```
### Other Linux/BSD
Use platform `unix` for `make install` or `unix-devel` for running directly
from the source directory.
### MinGW and DJGPP
Download the latest dependencies tarball from
[here](https://github.com/AliceLR/megazeux-dependencies) and extract it into
`scripts/deps/`. Provide the following to `config.sh`:
- MINGW64: `--platform win64 --prefix scripts/deps/mingw/x64`
- MINGW32: `--platform win32 --prefix scripts/deps/mingw/x86`
- DJGPP: set `DJGPP` environment variable to `scripts/deps/djgpp/i386`
and run `arch/djgpp/CONFIG.DJGPP` from the base directory.
When cross-compiling from Linux, use platforms `mingw64` and `mingw32` instead.
Additionally, DJGPP currently requires a copy of CWSDPMI.EXE to be placed in
`arch/djgpp/` for packaging.
### Darwin (macOS/Mac OS X via GNU Make)
Use platform `darwin` for `make install`, `darwin-devel` for running from the
source directory, and `darwin-dist` to build a portable multi-architecture .app
for distribution (see `arch/darwin/README.md` for more info on `darwin-dist`).
All three variants require Xcode to be installed with available command line
tools. It is easiest to get the dependency libraries from MacPorts (prefix
`/opt/local`) or from the MegaZeux prebuilt dependencies.
For `darwin-dist` (and optionally `darwin-devel`), download the latest
dependencies tarball from [here](https://github.com/AliceLR/megazeux-dependencies)
and extract it into `scripts/deps/`. In addition to the requirements listed in
the general requirements section, `darwin-dist` also requires dylibbundler,
which (along with other tools) is easiest to get via MacPorts.
### Other notes
Amiga OS 4, GP2X, and Pandora have not been tested recently and may have bitrot.
OpenSolaris was previously mentioned in the list of working platforms, but
neither old OpenSolaris nor modern Solaris can be verified currently.
MegaZeux builds in ancient environments with a little manual effort, if
for some reason you actually need this. The oldest tested is CentOS 3:
- Partial triage has been done on GCC 3.2 and 3.3, but this is low priority:
- 3.3: `-Wextra` added in 3.4 (trivial but left as a canary)
- 3.3: `-Wdeclaration-after-statement` added in 3.4
- 3.3: requires `--disable-stack-protector`
- 3.3: requires `--disable-modular`
(`CORE_LIBSPEC export struct graphics graphics_data` doesn't work)
- 3.2: `-std=gnu++98` added in 3.3
- 3.2: `-Wunused-macros` added in 3.3
- 3.2: `__attribute__(visibility("default"))` also doesn't work
- **zlib** <1.2.0 requires replacing/disabling `deflateBound` and `infback9`
- The numeric version macros didn't exist at this point; `ZLIB_VERNUM` was
added in 1.2.0.2 and the rest later.
- **libpng** <1.2.3 works if `libpng-config` is backported or if
`LIBPNG_CFLAGS` and `LIBPNG_LDFLAGS` are manually supplied to `platform.inc`.
- **libvorbis**: <1.2.2 works if `vorbis_version_string` is manually disabled.
libvorbis has never had numeric version macros to test.
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: Makefile
================================================
##
# MegaZeux Build System (GNU Make)
#
# NOTE: This build system is designed to not use recursive Makefiles.
# The rationale for this is documented here:
#
# https://web.archive.org/web/20200128044903/http://aegis.sourceforge.net/auug97.pdf
##
#
# Remove all built-in rules.
#
.SUFFIXES:
ifeq ($(filter -r,$(MAKEFLAGS)),)
MAKEFLAGS += -r
endif
.PHONY: all clean help_check mzx mzx.debug build build_clean source
.PHONY: test testworlds unit unittest test_clean unit_clean
#
# Define this first so arch-specific rules don't hijack the default target.
#
all:
-include platform.inc
include version.inc
#
# ${build_root}: base location where builds are copied to be archived for release.
# ${build}: location where the MegaZeux executable and data files should be placed.
# Defaults to ${build_root}, but the architecture Makefile may override this to
# use a subdirectory instead. This is useful when a platform expects a particular
# path hierarchy within the archive (e.g. MacOS .app bundles).
#
build_root := build/${SUBPLATFORM}
build := ${build_root}
EXTRA_LICENSES ?=
LICENSE_CC0 ?= arch/LICENSE.CC0
LICENSE_DJGPP ?= arch/LICENSE.DJGPP
LICENSE_LGPL2 ?= arch/LICENSE.LGPL2
LICENSE_MPL2 ?= arch/LICENSE.MPL2
LICENSE_NEWLIB ?= arch/LICENSE.Newlib
-include arch/${PLATFORM}/Makefile.in
CC ?= gcc
CXX ?= g++
AR ?= ar
AS ?= as
STRIP ?= strip
OBJCOPY ?= objcopy
WINDRES ?= windres
PEFIX ?= true
CHMOD ?= chmod
CP ?= cp
HOST_CC ?= gcc
LN ?= ln
MKDIR ?= mkdir
MV ?= mv
RM ?= rm
ifneq (${CROSS_COMPILE},)
ifeq (${CC},cc)
CC = gcc
endif
CC := ${CROSS_COMPILE}${CC}
CXX := ${CROSS_COMPILE}${CXX}
AR := ${CROSS_COMPILE}${AR}
AS := ${CROSS_COMPILE}${AS}
STRIP := ${CROSS_COMPILE}${STRIP}
OBJCOPY := ${CROSS_COMPILE}${OBJCOPY}
WINDRES := ${CROSS_COMPILE}${WINDRES}
endif
include arch/compat.inc
#
# Set up CFLAGS/LDFLAGS for all MegaZeux external dependencies.
#
ifneq (${BUILD_SDL},)
#
# SDL 3
#
ifeq (${BUILD_SDL},3)
# Check SDL_PKG_CONFIG_PATH and PREFIX/lib/pkgconfig for sdl3.pc.
# Note --with-path is a pkgconf extension.
ifneq ($(and ${SDL_PKG_CONFIG_PATH},$(wildcard ${SDL_PKG_CONFIG_PATH}/sdl3.pc)),)
# nop
else
# Check dependencies prefix instead for LIBDIR=. platforms.
# This is useless for unix/darwin, which should have sdl3.pc in a
# place pkgconf can find through normal means.
ifeq (${LIBDIR},.)
ifneq ($(wildcard ${PREFIX}/lib/pkgconfig/sdl3.pc),)
SDL_PKG_CONFIG_PATH ?= ${PREFIX}/lib/pkgconfig
endif
endif # LIBDIR=.
endif
ifneq (${SDL_PKG_CONFIG_PATH},)
SDL_PKG_CONFIG_FLAGS = --with-path=${SDL_PKG_CONFIG_PATH}
SDL_PKG_CONFIG_FORCE := PKG_CONFIG_PATH="${SDL_PKG_CONFIG_PATH}"
else
SDL_PKG_CONFIG_FORCE :=
endif
SDL_PREFIX := $(shell ${SDL_PKG_CONFIG_FORCE} ${PKGCONF} ${SDL_PKG_CONFIG_FLAGS} sdl3 --variable=prefix)
SDL_CFLAGS ?= $(shell ${SDL_PKG_CONFIG_FORCE} ${PKGCONF} ${SDL_PKG_CONFIG_FLAGS} sdl3 --cflags)
SDL_LDFLAGS ?= $(shell ${SDL_PKG_CONFIG_FORCE} ${PKGCONF} ${SDL_PKG_CONFIG_FLAGS} sdl3 --libs)
endif # SDL3
#
# SDL 2
#
ifeq (${BUILD_SDL},2)
# Check PREFIX for sdl2-config.
ifneq ($(and ${SDL_PREFIX},$(wildcard ${SDL_PREFIX}/bin/sdl2-config)),)
SDL_CONFIG := ${SDL_PREFIX}/bin/sdl2-config
else
ifneq ($(wildcard ${PREFIX}/bin/sdl2-config),)
SDL_CONFIG := ${PREFIX}/bin/sdl2-config
else
SDL_CONFIG := sdl2-config
endif
endif
SDL_PREFIX ?= $(shell ${SDL_CONFIG} --prefix)
SDL_CFLAGS ?= $(shell ${SDL_CONFIG} --prefix=${SDL_PREFIX} --cflags | sed 's,-I,-isystem ,g')
SDL_LDFLAGS ?= $(shell ${SDL_CONFIG} --prefix=${SDL_PREFIX} --libs)
endif # SDL2
#
# SDL 1.2
#
ifeq (${BUILD_SDL},1)
EXTRA_LICENSES += ${LICENSE_LGPL2}
# Check PREFIX for sdl-config.
ifneq ($(and ${SDL_PREFIX},$(wildcard ${SDL_PREFIX}/bin/sdl-config)),)
SDL_CONFIG := ${SDL_PREFIX}/bin/sdl-config
else
ifneq ($(wildcard ${PREFIX}/bin/sdl-config),)
SDL_CONFIG := ${PREFIX}/bin/sdl-config
else
SDL_CONFIG := sdl-config
endif
endif
SDL_PREFIX ?= $(shell ${SDL_CONFIG} --prefix)
SDL_CFLAGS ?= $(shell ${SDL_CONFIG} --prefix=${SDL_PREFIX} --cflags | sed 's,-I,-isystem ,g')
SDL_LDFLAGS ?= $(shell ${SDL_CONFIG} --prefix=${SDL_PREFIX} --libs)
endif # SDL1
# Make these immediate so the scripts run only once.
SDL_PREFIX := $(SDL_PREFIX)
SDL_CFLAGS := $(SDL_CFLAGS)
SDL_LDFLAGS := $(LINK_DYNAMIC_IF_MIXED) $(SDL_LDFLAGS)
endif # SDL
#
# libvorbis/tremor/stb_vorbis
#
VORBIS_CFLAGS ?= -I${PREFIX}/include -DOV_EXCLUDE_STATIC_CALLBACKS
ifeq (${VORBIS},vorbis)
VORBIS_LDFLAGS ?= $(LINK_STATIC_IF_MIXED) -L${PREFIX}/lib -lvorbisfile -lvorbis -logg
endif
ifeq (${VORBIS},tremor)
VORBIS_LDFLAGS ?= $(LINK_STATIC_IF_MIXED) -L${PREFIX}/lib -lvorbisidec -logg
endif
ifeq (${VORBIS},tremor-lowmem)
VORBIS_LDFLAGS ?= $(LINK_STATIC_IF_MIXED) -L${PREFIX}/lib -lvorbisidec
endif
ifeq (${VORBIS},stb_vorbis)
VORBIS_LDFLAGS ?= -L${PREFIX}/lib
endif
#
# MikMod (optional mod engine)
#
MIKMOD_CFLAGS ?= -I${PREFIX}/include
MIKMOD_LDFLAGS ?= $(LINK_STATIC_IF_MIXED) -L${PREFIX}/lib -lmikmod
ifneq (${BUILD_MIKMOD},)
EXTRA_LICENSES += ${LICENSE_LGPL2}
endif
#
# libopenmpt (optional mod engine)
#
OPENMPT_CFLAGS ?= -I${PREFIX}/include
OPENMPT_LDFLAGS ?= $(LINK_STATIC_IF_MIXED) -L${PREFIX}/lib -lopenmpt
#
# zlib
#
ZLIB_CFLAGS ?= -I${PREFIX}/include
ZLIB_LDFLAGS ?= $(LINK_STATIC_IF_MIXED) -L${PREFIX}/lib -lz
#
# libpng
#
ifeq (${LIBPNG},1)
# Check PREFIX for libpng-config.
ifneq ($(and ${LIBPNG_PREFIX},$(wildcard ${LIBPNG_PREFIX}/bin/libpng-config)),)
LIBPNG_CONFIG := ${LIBPNG_PREFIX}/bin/libpng-config
else
ifneq ($(wildcard ${PREFIX}/bin/libpng-config),)
LIBPNG_CONFIG := ${PREFIX}/bin/libpng-config
else
LIBPNG_CONFIG := libpng-config
endif
endif
LIBPNG_CFLAGS ?= $(shell ${LIBPNG_CONFIG} --cflags)
LIBPNG_LDFLAGS ?= $(shell ${LIBPNG_CONFIG} --ldflags)
# Make these immediate so the scripts run only once.
LIBPNG_CFLAGS := $(LIBPNG_CFLAGS)
LIBPNG_LDFLAGS := $(LINK_STATIC_IF_MIXED) $(LIBPNG_LDFLAGS)
endif
#
# X11
#
ifneq (${X11DIR},)
# BSD needs this but Fedora rpmbuild will whine about it and fail.
ifneq (${X11DIR},/usr)
X11RPATH ?= -Wl,-rpath,${X11LIBDIR}
endif
X11_CFLAGS ?= -I${X11DIR}/include
X11_LDFLAGS ?= -L${X11LIBDIR} -lX11 ${X11RPATH}
# Make these immediate
X11_CFLAGS := $(X11_CFLAGS)
X11_LDFLAGS := $(X11_LDFLAGS)
endif
#
# pthread
#
PTHREAD_LDFLAGS ?= -lpthread
#
# Set up general CFLAGS/LDFLAGS
#
#
# Usually, just disable the optimizer for "true" debug builds and
# define "DEBUG" to enable optional code at compile time.
# Optimized builds have assert() compiled out.
#
ifneq (${DEBUG},1)
OPTIMIZE_FLAGS := -O3 ${OPTIMIZE_CFLAGS} ${OPTIMIZE_FLAGS}
OPTIMIZE_DEF ?= -DNDEBUG
else
OPTIMIZE_FLAGS := -O0 ${DEBUG_CFLAGS} ${OPTIMIZE_FLAGS}
OPTIMIZE_DEF ?= -DDEBUG
endif
#
# Enable a sanitizer and its corresponding extra options, if selected.
#
ifeq (${SANITIZER},address)
OPTIMIZE_FLAGS += -fsanitize=address -fno-omit-frame-pointer
endif
ifeq (${SANITIZER},undefined)
# Signed integer overflows (shift-base, signed-integer-overflow)
# are pretty much inevitable in Robotic, so ignore them.
OPTIMIZE_FLAGS += -fsanitize=undefined -fno-omit-frame-pointer \
-fno-sanitize-recover=all -fno-sanitize=shift-base,signed-integer-overflow
endif
ifeq (${SANITIZER},thread)
OPTIMIZE_FLAGS += -fsanitize=thread -fno-omit-frame-pointer -fPIE
ARCH_EXE_LDFLAGS += -pie
endif
ifeq (${SANITIZER},memory)
# Note: to be useful, this requires a fairly special build with most
# external libraries turned off or re-built with instrumentation.
# This sanitizer is only implemented by clang.
OPTIMIZE_FLAGS += -fsanitize=memory -fno-omit-frame-pointer -fPIC \
-fsanitize-memory-track-origins=2
ARCH_EXE_LDFLAGS += -pie
endif
#
# Enable link-time optimization.
#
ifeq (${LTO},1)
ifeq (${HAS_F_LTO},1)
OPTIMIZE_FLAGS += -flto
else
$(warning link-time optimization not supported, ignoring.)
endif
endif
CFLAGS += ${OPTIMIZE_FLAGS} ${OPTIMIZE_DEF}
CXXFLAGS += ${OPTIMIZE_FLAGS} ${OPTIMIZE_DEF}
LDFLAGS += ${OPTIMIZE_FLAGS}
#
# Enable C++11 for compilers that support it.
# Anything actually using C++11 should be optional or platform-specific,
# as features using C++11 reduce portability.
#
ifeq (${HAS_CXX_11},1)
CXX_STD = -std=gnu++11
else
CXX_STD = -std=gnu++98
endif
#
# Always generate debug information; this may end up being
# stripped (on embedded platforms) or objcopy'ed out.
#
CFLAGS += -std=gnu99 -g ${ARCH_CFLAGS}
CXXFLAGS += ${CXX_STD} -g -fno-exceptions -fno-rtti ${ARCH_CXXFLAGS}
LDFLAGS += ${ARCH_LDFLAGS}
#
# Default warnings.
# Note: -Wstrict-prototypes was previously turned off for Android/NDS/Wii/PSP.
#
warnings := -Wall -Wextra -Wno-unused-parameter -Wwrite-strings
warnings += -Wundef -Wunused-macros -Wpointer-arith
CFLAGS += ${warnings} -Wdeclaration-after-statement -Wmissing-prototypes -Wstrict-prototypes
CXXFLAGS += ${warnings}
#
# Optional compile flags.
#
#
# Warn against global functions defined without a previous declaration (C++).
#
ifeq (${HAS_W_MISSING_DECLARATIONS_CXX},1)
CXXFLAGS += -Wmissing-declarations
endif
#
# Warn against variable-length array (VLA) usage, which is technically valid
# C99 but is in bad taste and isn't supported by MSVC.
#
ifeq (${HAS_W_VLA},1)
CFLAGS += -Wvla
CXXFLAGS += -Wvla
endif
#
# Linux GCC gives spurious format truncation warnings. The snprintf
# implementation on Linux will terminate even in the case of truncation,
# making this largely useless. It does not trigger using mingw (where it
# would actually matter).
#
ifeq (${HAS_W_NO_FORMAT_TRUNCATION},1)
CFLAGS += -Wno-format-truncation
CXXFLAGS += -Wno-format-truncation
endif
#
# Old GCC versions emit false positive warnings for C++11 value initializers.
#
ifeq (${HAS_BROKEN_W_MISSING_FIELD_INITIALIZERS},1)
CXXFLAGS += -Wno-missing-field-initializers
endif
#
# We enable pedantic warnings here, but this ends up turning on some things
# we must disable by hand.
#
# Variadic macros are arguably less portable, but all the compilers we
# support have them.
#
ifeq (${HAS_PEDANTIC},1)
CFLAGS += -pedantic
CXXFLAGS += -pedantic
ifeq (${HAS_W_NO_VARIADIC_MACROS},1)
CFLAGS += -Wno-variadic-macros
CXXFLAGS += -Wno-variadic-macros
endif
endif
#
# KallistiOS has a pretty dire header situation
#
ifeq (${BUILD_DREAMCAST},1)
CFLAGS += -Wno-strict-prototypes -Wno-pedantic
CXXFLAGS += -Wno-pedantic
endif
#
# As does BlocksDS, currently
#
ifeq (${BUILD_NDS_BLOCKSDS},1)
CFLAGS += -Wno-strict-prototypes -Wno-pedantic -Wno-declaration-after-statement
CXXFLAGS += -Wno-pedantic
endif
#
# The following flags are not applicable to mingw or djgpp builds.
#
ifneq (${PLATFORM},mingw)
ifneq (${PLATFORM},djgpp)
#
# Symbols in COFF binaries are implicitly hidden unless exported; this
# flag just confuses GCC and must be disabled.
#
ifeq (${HAS_F_VISIBILITY},1)
CFLAGS += -fvisibility=hidden
CXXFLAGS += -fvisibility=hidden
endif
endif # PLATFORM=djgpp
endif # PLATFORM=mingw
#
# The stack protector is optional and is generally only built for Linux/BSD and
# Mac OS X. It also works on Windows. GCC's -fstack-protector-strong is
# preferred when available due to better performance.
#
ifeq (${BUILD_STACK_PROTECTOR},1)
ifeq (${HAS_F_STACK_PROTECTOR_STRONG},1)
CFLAGS += -fstack-protector-strong
CXXFLAGS += -fstack-protector-strong
else
ifeq (${HAS_F_STACK_PROTECTOR},1)
CFLAGS += -fstack-protector-all
CXXFLAGS += -fstack-protector-all
else
$(warning stack protector not supported, ignoring.)
endif
endif
endif
#
# Enable -fanalyzer if supported.
#
ifeq (${BUILD_F_ANALYZER},1)
ifeq (${HAS_F_ANALYZER},1)
CFLAGS += -fanalyzer
CXXFLAGS += -fanalyzer
else
$(warning GCC 10+ is required for -fanalyzer, ignoring.)
endif
endif
#
# Enable position-independent code across the board for modular builds.
#
ifeq (${BUILD_MODULAR},1)
CFLAGS += -fPIC
CXXFLAGS += -fPIC
endif
#
# We don't want these commands to be echo'ed in non-verbose mode
#
ifneq (${V},1)
override V:=
CC := @${CC}
CXX := @${CXX}
AR := @${AR}
AS := @${AS}
STRIP := @${STRIP}
OBJCOPY := @${OBJCOPY}
WINDRES := @${WINDRES}
PEFIX := @${PEFIX}
CHMOD := @${CHMOD}
CP := @${CP}
HOST_CC := @${HOST_CC}
LN := @${LN}
MKDIR := @${MKDIR}
MV := @${MV}
RM := @${RM}
endif
build_clean:
$(if ${V},,@echo " RM " build)
${RM} -r build
source: build/${TARGET}src
#
# Build source target
# Targeting unix primarily, so turn off autocrlf if necessary.
#
build/${TARGET}src:
${RM} -r build/${TARGET}
${MKDIR} -p build/dist/source
@git -c "core.autocrlf=false" checkout-index -a --prefix build/${TARGET}/
${RM} -r build/${TARGET}/scripts
${RM} build/${TARGET}/.gitignore build/${TARGET}/.gitattributes
@cd build/${TARGET} && ${MAKE} distclean
@tar -C build -Jcf build/dist/source/${TARGET}src.tar.xz ${TARGET}
#
# The SUPPRESS_ALL_TARGETS hack is required to allow the placebo "dist"
# Makefile to provide an 'all:' target, which allows it to print
# a message. Pulling in any other targets would confuse Make.
#
# Additionally, there are several other SUPPRESS flags that can be set to
# conditionally disable rules. This is useful for cross-compiling builds that
# have no use for host-based rules or for platforms that use meta targets.
#
# * SUPPRESS_CC_TARGETS prevents "mzx", etc from being added to "all".
# * SUPPRESS_BUILD_TARGETS suppresses "build".
# * SUPPRESS_HOST_TARGETS suppresses "assets/help.fil", "test", etc.
#
ifneq (${SUPPRESS_ALL_TARGETS},1)
mzxrun = mzxrun${BINEXT}
mzx = megazeux${BINEXT}
mzx: ${mzxrun} ${mzx}
mzx.debug: ${mzxrun}.debug ${mzx}.debug
ifeq (${BUILD_MODPLUG},1)
BUILD_GDM2S3M=1
endif
%/.build:
$(if ${V},,@echo " MKDIR " $@)
${MKDIR} $@
%.debug: %
$(if ${V},,@echo " OBJCOPY " --only-keep-debug $< $@)
${OBJCOPY} --only-keep-debug $< $@
${PEFIX} $@
${CHMOD} a-x $@
ifneq (${NO_STRIP_IN_DEBUGLINK},1)
$(if ${V},,@echo " STRIP " --strip-unneeded $<)
${STRIP} --strip-unneeded $<
endif
$(if ${V},,@echo " OBJCOPY " --add-gnu-debuglink $@ $<)
${OBJCOPY} --add-gnu-debuglink=$@ $<
${PEFIX} $<
@touch $@
include src/Makefile.in
clean: mzx_clean test_clean unit_clean
ifneq (${SUPPRESS_CC_TARGETS},1)
all: mzx
debuglink: all mzx.debug
endif
ifeq (${BUILD_UTILS},1)
include src/utils/Makefile.in
clean: utils_clean
ifneq (${SUPPRESS_CC_TARGETS},1)
debuglink: utils utils.debug
all: utils
endif
endif
ifneq (${SUPPRESS_BUILD_TARGETS},1)
ifeq (${build},)
build := ${build_root}
endif
.PHONY: ${build}
build: ${build} ${build}/assets ${build}/docs
${build}:
${RM} -r ${build_root}
${MKDIR} -p ${build}
${CP} config.txt LICENSE arch/LICENSE.3rd ${EXTRA_LICENSES} ${build}
@if test -f ${mzxrun}; then \
cp ${mzxrun} ${build}; \
fi
@if test -f ${mzxrun}.debug; then \
cp ${mzxrun}.debug ${build}; \
fi
ifeq (${BUILD_EDITOR},1)
@if test -f ${mzx}; then \
cp ${mzx} ${build}; \
fi
@if test -f ${mzx}.debug; then \
cp ${mzx}.debug ${build}; \
fi
endif
ifeq (${BUILD_MODULAR},1)
${CP} ${core_target} ${editor_target} ${build}
@if test -f ${core_target}.debug; then \
cp ${core_target}.debug ${build}; \
fi
@if test -f ${editor_target}.debug; then \
cp ${editor_target}.debug ${build}; \
fi
endif
ifeq (${BUILD_UTILS},1)
${MKDIR} ${build}/utils
${CP} ${checkres} ${downver} ${build}/utils
${CP} ${hlp2txt} ${txt2hlp} ${build}/utils
${CP} ${ccv} ${png2smzx} ${y4m2smzx} ${build}/utils
@if [ -f "${checkres}.debug" ]; then cp ${checkres}.debug ${build}/utils; fi
@if [ -f "${downver}.debug" ]; then cp ${downver}.debug ${build}/utils; fi
@if [ -f "${hlp2txt}.debug" ]; then cp ${hlp2txt}.debug ${build}/utils; fi
@if [ -f "${txt2hlp}.debug" ]; then cp ${txt2hlp}.debug ${build}/utils; fi
@if [ -f "${ccv}.debug" ]; then cp ${ccv}.debug ${build}/utils; fi
@if [ -f "${png2smzx}.debug" ]; then cp ${png2smzx}.debug ${build}/utils; fi
@if [ -f "${y4m2smzx}.debug" ]; then cp ${y4m2smzx}.debug ${build}/utils; fi
endif
${build}/docs: ${build}
${MKDIR} -p ${build}/docs
${CP} docs/macro.txt docs/keycodes.html docs/mzxhelp.html ${build}/docs
${CP} docs/joystick.html docs/cycles_and_commands.txt ${build}/docs
${CP} docs/fileform.html ${build}/docs
${CP} docs/changelog.txt docs/platform_matrix.html ${build}/docs
${build}/assets: ${build}
${MKDIR} -p ${build}/assets
${CP} assets/default.chr assets/edit.chr ${build}/assets
${CP} assets/smzx.pal ${build}/assets
ifeq (${BUILD_EDITOR},1)
${CP} assets/ascii.chr assets/blank.chr ${build}/assets
${CP} assets/smzx.chr assets/smzx2.chr ${build}/assets
endif
ifeq (${BUILD_HELPSYS},1)
${CP} assets/help.fil ${build}/assets
endif
ifeq (${BUILD_RENDER_GL_PROGRAM},1)
${MKDIR} -p ${build}/assets/glsl/scalers
${CP} assets/glsl/*.vert ${build}/assets/glsl
${CP} assets/glsl/*.frag ${build}/assets/glsl
${CP} assets/glsl/README.md ${build}/assets/glsl
${CP} assets/glsl/scalers/*.frag assets/glsl/scalers/*.vert \
${build}/assets/glsl/scalers
endif
ifeq (${BUILD_GAMECONTROLLERDB},1)
${CP} assets/gamecontrollerdb.txt \
${build}/assets
endif
ifeq (${BUILD_UTILS},1)
${CP} contrib/mzvplay/mzvplay.txt \
${build}/utils
endif
endif # !SUPPRESS_BUILD_TARGETS
distclean: clean
@echo " DISTCLEAN"
@rm -f src/config.h
@echo "PLATFORM=none" > platform.inc
ifneq (${SUPPRESS_HOST_TARGETS},1)
assets/help.fil: ${txt2hlp} docs/WIPHelp.txt
$(if ${V},,@echo " txt2hlp " $@)
@src/utils/txt2hlp docs/WIPHelp.txt $@
docs/mzxhelp.html: ${hlp2html} docs/WIPHelp.txt
$(if ${V},,@echo " hlp2html" $@)
@src/utils/hlp2html docs/WIPHelp.txt docs/mzxhelp.html
help_check: ${hlp2txt} assets/help.fil
@src/utils/hlp2txt assets/help.fil help.txt
@echo @ >> help.txt
@diff --strip-trailing-cr -q docs/WIPHelp.txt help.txt
@rm -f help.txt
-include unit/Makefile.in
test: unit
test testworlds:
ifeq (${BUILD_MODULAR},1)
@${SHELL} testworlds/run.sh ${PLATFORM} "$(realpath ${core_target})"
else
@${SHELL} testworlds/run.sh ${PLATFORM}
endif
endif # !SUPPRESS_HOST_TARGETS
test_clean:
@rm -rf testworlds/log
endif # !SUPPRESS_ALL_TARGETS
================================================
FILE: README.md
================================================
# MegaZeux
[Official MegaZeux git repository](https://github.com/AliceLR/megazeux)
MegaZeux is a game creation system (GCS) created by game developer Alexis Janson in 1994.
Originally a DOS program, in 2005 a multi-platform port was released by Exophase. The most
recent version of MegaZeux is 2.93d, which was released on June 9th, 2025.
MegaZeux is officially supported on Windows, Linux, macOS, BSD, Haiku, HTML5,
and MS-DOS, as well as numerous console ports. See platform_matrix.html for a
full list of ports.
## Downloads
Windows, MS-DOS, and console releases are packaged with a copy of the game
Caverns of Zeux. Older versions are available at [DigitalMZX](https://www.digitalmzx.com/)
or [on the Github releases page](https://github.com/AliceLR/megazeux/releases).
<!-- Download URLs. -->
[megazeux-w64]: https://www.digitalmzx.com/download.php?latest=windows64
[megazeux-w32]: https://www.digitalmzx.com/download.php?latest=windows32
[megazeux-dos]: https://www.digitalmzx.com/download.php?latest=dos
[megazeux-dos32]: https://www.digitalmzx.com/download.php?latest=dosdjgpp
[megazeux-osx]: https://www.digitalmzx.com/download.php?latest=osx
[megazeux-ppc]: https://www.digitalmzx.com/download.php?latest=osxppc
[megazeux-u64]: https://www.digitalmzx.com/download.php?latest=ubuntu64
[megazeux-ults]: https://www.digitalmzx.com/download.php?latest=ubuntu64lts
[megazeux-d64]: https://www.digitalmzx.com/download.php?latest=debian64
[megazeux-d32]: https://www.digitalmzx.com/download.php?latest=debian32
[megazeux-f64]: https://www.digitalmzx.com/download.php?latest=fedora64
[megazeux-rpi]: https://www.digitalmzx.com/download.php?latest=raspbian
[megazeux-flat]: https://www.digitalmzx.com/download.php?latest=flatpak
[megazeux-and]: https://www.digitalmzx.com/download.php?latest=android
[megazeux-html]: https://www.digitalmzx.com/download.php?latest=html5
[megazeux-nds]: https://www.digitalmzx.com/download.php?latest=nds
[megazeux-3ds]: https://www.digitalmzx.com/download.php?latest=3ds
[megazeux-wii]: https://www.digitalmzx.com/download.php?latest=wii
[megazeux-wiiu]: https://www.digitalmzx.com/download.php?latest=wiiu
[megazeux-swi]: https://www.digitalmzx.com/download.php?latest=switch
[megazeux-psp]: https://www.digitalmzx.com/download.php?latest=psp
[megazeux-vita]: https://www.digitalmzx.com/download.php?latest=psvita
[megazeux-dc]: https://www.digitalmzx.com/download.php?latest=dreamcast
[megazeux-src]: https://www.digitalmzx.com/download.php?latest=src
<!-- Images for download links. -->
[arch-w64]: contrib/archicons/windows64.png "Windows x64"
[arch-w32]: contrib/archicons/windows32.png "Windows x86"
[arch-dos]: contrib/archicons/dos.png "MS DOS (MZX 2.70)"
[arch-dos32]:contrib/archicons/dosdjgpp.png "MS DOS (32-bit)"
[arch-osx]: contrib/archicons/osx.png "macOS"
[arch-ppc]: contrib/archicons/maccompat.png "macOS (Compatible)"
[arch-u64]: contrib/archicons/ubuntu64.png "Ubuntu AMD64"
[arch-ults]: contrib/archicons/ubuntu64lts.png "Ubuntu AMD64 LTS"
[arch-d64]: contrib/archicons/debian64.png "Debian AMD64"
[arch-d32]: contrib/archicons/debian32.png "Debian i386"
[arch-f64]: contrib/archicons/fedora64.png "Fedora x86_64"
[arch-rpi]: contrib/archicons/raspbian.png "Raspbian"
[arch-flat]:contrib/archicons/flatpak.png "Flatpak"
[arch-and]: contrib/archicons/android.png "Android"
[arch-html]:contrib/archicons/html5.png "HTML5 (Emscripten)"
[arch-aur]: contrib/archicons/archlinux.png "Arch Linux (via AUR)"
[arch-void]:contrib/archicons/voidlinux.png "Void Linux"
[arch-gen]: contrib/archicons/gentoo.png "Gentoo"
[arch-alp]: contrib/archicons/alpine.png "Alpine Linux"
[arch-nds]: contrib/archicons/nds.png "Nintendo DS"
[arch-3ds]: contrib/archicons/3ds.png "Nintendo 3DS"
[arch-wii]: contrib/archicons/wii.png "Nintendo Wii"
[arch-wiiu]:contrib/archicons/wiiu.png "Nintendo Wii U"
[arch-swi]: contrib/archicons/switch.png "Nintendo Switch"
[arch-psp]: contrib/archicons/psp.png "PlayStation Portable"
[arch-vita]:contrib/archicons/psvita.png "PlayStation Vita"
[arch-dc]: contrib/archicons/dreamcast.png "Sega Dreamcast"
[arch-ami]: contrib/archicons/amiga.png "Amiga OS 4"
[arch-gp2x]:contrib/archicons/gp2x.png "GP2X"
[arch-pand]:contrib/archicons/pandora.png "Pandora"
[arch-src]: contrib/archicons/src.png "Source code"
<!-- Displays the download links as images. -->
[![Windows x64 ][arch-w64]][megazeux-w64]
[![Windows x86 ][arch-w32]][megazeux-w32]
[![Mac OS X ][arch-osx]][megazeux-osx]
[![macOS (Compatible)) ][arch-ppc]][megazeux-ppc]
[![Ubuntu AMD64 ][arch-u64]][megazeux-u64]
[![Ubuntu AMD64 LTS ][arch-ults]][megazeux-ults]
[![Debian AMD64 ][arch-d64]][megazeux-d64]
[![Debian i386 ][arch-d32]][megazeux-d32]
[![Fedora x86_64 ][arch-f64]][megazeux-f64]
[![Raspbian ][arch-rpi]][megazeux-rpi]
[![Flatpak ][arch-flat]][megazeux-flat]
[![Android ][arch-and]][megazeux-and]
[![HTML5 (Emscripten) ][arch-html]][megazeux-html]
[![Nintendo DS ][arch-nds]][megazeux-nds]
[![Nintendo 3DS ][arch-3ds]][megazeux-3ds]
[![Nintendo Wii ][arch-wii]][megazeux-wii]
[![Nintendo Wii U ][arch-wiiu]][megazeux-wiiu]
[![Nintendo Switch ][arch-swi]][megazeux-swi]
[![PlayStation Portable][arch-psp]][megazeux-psp]
[![PlayStation Vita ][arch-vita]][megazeux-vita]
[![Sega Dreamcast ][arch-dc]][megazeux-dc]
[![DOS (32-bit) ][arch-dos32]][megazeux-dos32]
[![MS DOS (MZX 2.70) ][arch-dos]][megazeux-dos]
[![Source code ][arch-src]][megazeux-src]
The following platforms have MegaZeux releases available via repository:
[![Arch Linux (via AUR)][arch-aur]](https://aur.archlinux.org/packages/megazeux/)
[![Void Linux][arch-void]](https://github.com/void-linux/void-packages/tree/master/srcpkgs/megazeux)
[![Gentoo][arch-gen]](https://github.com/Spectere/megazeux-overlay)
[![Alpine Linux][arch-alp]](https://pkgs.alpinelinux.org/packages?name=megazeux)
[![Amiga OS 4 (outdated)][arch-ami]](http://aminet.net/package/game/misc/pfp-mgzx)
[![GP2X (outdated)][arch-gp2x]](https://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,26,2920)
[![Pandora (outdated)][arch-pand]](https://repo.openpandora.org/?page=detail&app=megazeux_ptitseb)
## Building MegaZeux
See BUILDING.md for more information about compiling MegaZeux from source.
## Credits
| MegaZeux 2.9x | |
| ----------------------- | ---------------------------------------------------------- |
| Alice Rowan | Development/current maintainer |
| Terryn | Help file; testing |
| Lancer X | Development; testing |
| Adrian Siekierka | Development; testing; various ports |
| Dizzy O'Malley-Morrison | Development; testing; Ubuntu/Debian/Raspbian/Arch packages |
| Spectere | Development; testing; Xcode and MSVC projects |
| Alistair Strachan | Development |
| Others | Various |
#### MegaZeux Credits
Programming and Overall Design by Gilead Kutnick (Exophase),
Alistair Strachan (ajs), Alice Rowan (Lachesis) and Lancer-X.
Based off of original program and source code by Alexis Janson.
Help file by Terryn.
Default SMZX palette by Joel Lamontagne (LogiCow).
ccv utility by Lancer-X.
png2smzx utility by Alan Williams (Mr_Alert).
checkres utility by Josh Matthews (Revvy), ajs and Lachesis.
Port contributors: Adrian Siekierka (asiekierka) [3DS],
Mr_Alert [Wii], Kevin Vance [NDS], Simon Parzer [GP2X].
Renderer code contributors: LogiCow, Mr_Alert.
Shader code contributors: David Cravens (astral), GreaseMonkey.
Icon by Quantum P.; Extra icons by LogiCow.
GDM conversion by ajs and MadBrain.
Other past contributors: Spider124, Koji, JZig, Akwende, MenTaLguY.
#### Special Thanks
Dizzy (Testing, .deb and Arch packages)
Spectere (Testing, OS X Builds, MSVC project)
Terryn (Testing)
mzxgiant (MSVC Testing, Bug Fixes)
mzxrules (Testing)
Quantum P. (OS X Testing / Builds)
Wervyn (Testing)
## License
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
## Contact
Want to talk about MegaZeux? Encountered a bug or would like a new feature?
The MegaZeux community and development team can be contacted through Discord,
GitHub, or the DigitalMZX forums.
[MegaZeux Discord](https://discord.gg/XJCvb4P) <br/>
[DigitalMZX forums](https://www.digitalmzx.com/forums/) <br/>
[MegaZeux Bug tracker](https://www.digitalmzx.com/forums/index.php?app=tracker&showproject=4) <br/>
[MegaZeux Feature requests](https://www.digitalmzx.com/forums/index.php?app=tracker&showproject=9) <br/>
[AliceLR on GitHub](https://github.com/AliceLR) <br/>
## Resources
[Official MegaZeux game archive](https://www.digitalmzx.com/) <br/>
[MegaZeux help file](https://www.digitalmzx.com/mzx_help.html) <br/>
[Development roadmap](https://www.digitalmzx.com/forums/index.php?showtopic=15226)
================================================
FILE: arch/3ds/CONFIG.3DS
================================================
#!/bin/sh
./config.sh --platform 3ds --enable-release --enable-lto --enable-meter \
--disable-sdl --enable-tremor --disable-screenshots --disable-utils \
--enable-stdio-redirect "$@"
================================================
FILE: arch/3ds/Makefile.in
================================================
#
# Nintendo 3DS Makefile
#
include $(DEVKITARM)/3ds_rules
.PHONY: package clean
ifeq ($(strip $(DEVKITPRO)),)
$(error "DEVKITPRO must be set in your environment.")
endif
ifeq ($(strip $(DEVKITARM)),)
$(error "DEVKITARM must be set in your environment.")
endif
ifneq (${BUILD_EDITOR},)
APP_TITLE_MZX = MegaZeux
APP_TITLE_MZXRUN = MegaZeux (MZXRun)
else
APP_TITLE_MZXRUN = MegaZeux
endif
APP_DESCRIPTION = Game creation system
APP_AUTHOR = MegaZeux Developers
APP_ICON = contrib/icons/generated/icon_48.png
EXTRA_LICENSES += ${LICENSE_MPL2} ${LICENSE_NEWLIB}
#
# 3DS target rules
#
# Block --host, which will break things.
CROSS_COMPILE =
# Don't strip when generating debug symbols.
NO_STRIP_IN_DEBUGLINK ?= 1
# Disable rules that require target code to run natively.
SUPPRESS_HOST_TARGETS ?= 1
#
# Override library paths.
#
#
# As of devkitARM r51 $(PORTLIBS) has multiple paths...
#
PORTLIBS_INCLUDES := $(foreach dir, $(PORTLIBS), -isystem $(dir)/include)
PORTLIBS_LIBS := $(foreach dir, $(PORTLIBS), -L$(dir)/lib)
EXTRA_INCLUDES := -isystem $(CTRULIB)/include ${PORTLIBS_INCLUDES}
EXTRA_LIBS := -L$(CTRULIB)/lib ${PORTLIBS_LIBS}
ifeq (${DEBUG},1)
EXTRA_LIBS += -lcitro3dd -lctrud -lpng16 -lz
else
OPTIMIZE_FLAGS += -fomit-frame-pointer -ffunction-sections
EXTRA_LIBS += -lcitro3d -lctru -lpng16 -lz
endif
MACHDEP = -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft -mword-relocations
ifneq (${BUILD_SDL},)
# devkitPro's SDL 1.2 port accidentally defines key_press and key_release as
# global symbols.
3DS_CFLAGS += -Dkey_press=mzx_key_press -Dkey_release=mzx_key_release
endif
3DS_CFLAGS += ${EXTRA_INCLUDES} ${MACHDEP} -DARM11 -D__3DS__ -Iarch/3ds
ARCH_CFLAGS += ${3DS_CFLAGS}
ARCH_CXXFLAGS += ${3DS_CFLAGS}
ARCH_LDFLAGS += ${EXTRA_LIBS} ${MACHDEP} -specs=3dsx.specs
LIBPNG_CFLAGS =
LIBPNG_LDFLAGS = -lpng16
#
# Vile hack, remove me ASAP
# (also, vile hack in a vile hack to get the shaders to build parallel)
#
arch/3ds/%.o: arch/3ds/%.c
$(if ${V},,@echo " CC " $<)
${CC} -MD ${core_cflags} ${core_flags} -Wno-unused-macros -c $< -o $@
arch/3ds/%.o: arch/3ds/%.cpp arch/3ds/shader_2d.shbin.o arch/3ds/shader_playfield.shbin.o
$(if ${V},,@echo " CXX " $<)
${CXX} -MD ${core_cxxflags} ${core_flags} -Wno-unused-macros -c $< -o $@
# Do not delete these, since doing so will retrigger .o rebuilds above
.SECONDARY: arch/3ds/shader_2d_shbin.h arch/3ds/shader_playfield_shbin.h
arch/3ds/%.shbin: arch/3ds/%.v.pica arch/3ds/%.g.pica
$(if ${V},,@echo " PICASSO " $^)
@picasso -o $@ $^
arch/3ds/%.shbin.o: arch/3ds/%.shbin arch/3ds/%_shbin.h
$(if ${V},,@echo " AS " $<)
@bin2s $< > $<.S
@# Shut up the assembler since bin2s doesn't emit a trailing newline:
@echo '' >> $<.S
$(AS) $<.S -o $@
arch/3ds/%_shbin.h: arch/3ds/%.shbin
$(eval CURLOC := $(patsubst %_shbin.h,%.shbin,$@))
$(eval CURBIN := $(patsubst %_shbin.h,%.shbin,$(notdir $@)))
$(if ${V},,@echo " ECHO " $@)
@echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURLOC) | tr . _)`.h
@echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURLOC) | tr . _)`.h
@echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURLOC) | tr . _)`.h
#
# Target-specific variables to force the .3dsx files to have different titles...
#
mzxrun.smdh: APP_TITLE=${APP_TITLE_MZXRUN}
megazeux.smdh: APP_TITLE=${APP_TITLE_MZX}
package: mzx mzxrun.smdh megazeux.smdh
3dsxtool ${mzxrun} ${mzxrun}.3dsx --smdh=${mzxrun}.smdh --romfs=arch/3ds/romfs
ifneq (${BUILD_EDITOR},)
3dsxtool ${mzx} ${mzx}.3dsx --smdh=${mzx}.smdh --romfs=arch/3ds/romfs
endif
clean:
${RM} ${mzxrun}.smdh ${mzxrun}.3dsx ${mzx}.smdh ${mzx}.3dsx
${RM} arch/3ds/*.d arch/3ds/*.o arch/3ds/*shbin*
build := ${build_root}/3ds/megazeux
build: package ${build}
ifeq ($(BUILD_SDL),)
${CP} arch/3ds/pad.config ${build}
else
ifeq ($(BUILD_SDL),1)
${CP} arch/3ds/pad.config.sdl12 ${build}/pad.config
else
${CP} arch/3ds/pad.config.sdl2 ${build}/pad.config
endif
endif
${CP} ${mzxrun}.3dsx ${build}
ifneq (${BUILD_EDITOR},)
${CP} ${mzx}.3dsx ${build}
endif
${RM} ${build}/${mzxrun} ${build}/${mzxrun}.debug
${RM} ${build}/${mzx} ${build}/${mzx}.debug
include arch/zip.inc
================================================
FILE: arch/3ds/README.md
================================================
## Preparation
You need to install the latest versions of the devkitARM
toolchain, as well as the necessary 3DS tooling.
You also need to install zlib, libpng and libtremor. This
can be done with the following command:
pacman -S 3ds-libogg 3ds-libpng 3ds-libvorbisidec 3ds-zlib
## Configuring
See CONFIG.3DS for an optimal `config.sh` configure line. You need
to ensure DEVKITPRO and DEVKITARM are both defined and valid.
## Building
For the moment, you need to build with:
make package
This will emit the "mzxrun.3dsx" file.
## Packaging
You can then use the usual `make archive` to build a
build/dist/3ds/mzxgit-3ds.zip file for distribution.
================================================
FILE: arch/3ds/audio.c
================================================
/* MegaZeux
*
* Copyright (C) 2016 Adrian Siekierka <asiekierka@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "../../src/event.h"
#include "../../src/platform.h"
#include "../../src/graphics.h"
#include "../../src/audio/audio.h"
#include "../../src/audio/audio_struct.h"
#include <3ds.h>
#include <string.h>
#include "platform.h"
#ifdef CONFIG_AUDIO
static u8 *audio_buffer;
static ndspWaveBuf ndsp_buffer[2];
static unsigned buffer_frames;
static unsigned buffer_size;
static bool soundFillBlock = false;
static void ndsp_callback(void *dud)
{
if(ndsp_buffer[soundFillBlock].status == NDSP_WBUF_DONE)
{
audio_mixer_render_frames(ndsp_buffer[soundFillBlock].data_pcm16,
buffer_frames, 2, SAMPLE_S16);
DSP_FlushDataCache(ndsp_buffer[soundFillBlock].data_pcm8, buffer_size);
ndspChnWaveBufAdd(0, &ndsp_buffer[soundFillBlock]);
soundFillBlock = !soundFillBlock;
}
}
void init_audio_platform(struct config_info *conf)
{
// buffer size must be multiple of 32 bytes(?), so samples must be multiple of 8
unsigned frames = (conf->audio_buffer_samples + 7) & ~7;
float mix[12];
audio_buffer = NULL;
if(!audio_mixer_init(conf->audio_sample_rate, frames, 2))
return;
buffer_frames = audio.buffer_frames;
buffer_size = buffer_frames * sizeof(int16_t) * 2 /* stereo */;
if(ndspInit() != 0)
return;
memset(mix, 0, sizeof(mix));
mix[0] = mix[1] = 1.0f;
ndspSetOutputMode(NDSP_OUTPUT_STEREO);
ndspSetOutputCount(1);
ndspSetMasterVol(1.0f);
audio_buffer = clinearAlloc(buffer_size * 2, 0x80);
memset(audio_buffer, 0, buffer_size * 2);
ndspSetCallback(ndsp_callback, audio_buffer);
memset(&ndsp_buffer[0], 0, sizeof(ndspWaveBuf));
memset(&ndsp_buffer[1], 0, sizeof(ndspWaveBuf));
ndspChnReset(0);
ndspChnSetInterp(0, NDSP_INTERP_LINEAR);
ndspChnSetRate(0, audio.output_frequency);
ndspChnSetFormat(0, NDSP_CHANNELS(2) | NDSP_ENCODING(NDSP_ENCODING_PCM16));
ndspChnSetMix(0, mix);
ndsp_buffer[0].data_vaddr = &audio_buffer[0];
ndsp_buffer[0].nsamples = buffer_frames;
ndsp_buffer[1].data_vaddr = &audio_buffer[buffer_size];
ndsp_buffer[1].nsamples = buffer_frames;
ndspChnWaveBufAdd(0, &ndsp_buffer[0]);
ndspChnWaveBufAdd(0, &ndsp_buffer[1]);
}
void quit_audio_platform(void)
{
if(audio_buffer)
{
linearFree(audio_buffer);
audio_buffer = NULL;
ndspExit();
}
}
#endif // CONFIG_AUDIO
================================================
FILE: arch/3ds/event.c
================================================
/* MegaZeux
*
* Copyright (C) 2016 Adrian Siekierka <asiekierka@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "../../src/event.h"
#include "../../src/graphics.h"
#include "../../src/platform.h"
#include "../../src/util.h"
#include <3ds.h>
#include <stdint.h>
#include "event.h"
#include "keyboard.h"
extern struct input_status input;
static enum bottom_screen_mode b_mode;
static enum focus_mode allow_focus_changes = FOCUS_ALLOW;
static boolean is_dragging = false;
boolean update_hid(void);
enum focus_mode get_allow_focus_changes(void)
{
return allow_focus_changes;
}
enum bottom_screen_mode get_bottom_screen_mode(void)
{
return b_mode;
}
boolean __update_event_status(void)
{
boolean retval = false;
retval |= aptMainLoop();
retval |= update_hid();
return retval;
}
boolean __peek_exit_input(void)
{
/* FIXME stub */
return false;
}
void __wait_event(void)
{
while(!__update_event_status())
gspWaitForVBlank();
}
void __warp_mouse(int x, int y)
{
// Since the touchscreen stylus can't be warped, focus there instead.
focus_pixel(x, y);
}
// Convert the 3DS axis ranges to the MZX axis ranges. The 3DS uses values in
// (roughly) the -150 to 150 range, but MZX uses the full range of a int16_t.
// The 3DS Y axis is also inverted from the typical axis direction, but that
// is fixed in check_circle below.
static inline int16_t axis_convert(s16 value)
{
int new_value = ((int)value) * 32768 / 150;
return (int16_t)CLAMP(new_value, -32768, 32767);
}
static inline boolean check_circle(struct buffered_status *status,
circlePosition *current, circlePosition *prev, int axis_x, int axis_y)
{
boolean rval = false;
if(current->dx != prev->dx)
{
joystick_axis_update(status, 0, axis_x, axis_convert(current->dx));
rval = true;
}
if(current->dy != prev->dy)
{
// 3DS has an inverted Y axis on the circle pad vs. most controllers.
joystick_axis_update(status, 0, axis_y, axis_convert(-current->dy));
rval = true;
}
return rval;
}
static inline boolean check_hat(struct buffered_status *status,
uint32_t down, uint32_t up, uint32_t key, enum joystick_hat dir)
{
if(down & key)
{
joystick_hat_update(status, 0, dir, true);
return true;
}
else
if(up & key)
{
joystick_hat_update(status, 0, dir, false);
return true;
}
return false;
}
static inline boolean check_joy(struct buffered_status *status,
uint32_t down, uint32_t up, uint32_t key, int button)
{
if(down & key)
{
joystick_button_press(status, 0, button);
return true;
}
else
if(up & key)
{
joystick_button_release(status, 0, button);
return true;
}
return false;
}
static inline boolean ctr_is_mouse_area(touchPosition *touch)
{
int mx, my;
if(b_mode == BOTTOM_SCREEN_MODE_KEYBOARD)
{
mx = touch->px * 4 - 320;
my = touch->py * 4 - (13 * 4);
if(mx < 0 || mx >= 640 || my < 0 || my >= 350)
return false;
else
return true;
}
else
{
return true;
}
}
static inline boolean ctr_update_touch(struct buffered_status *status,
touchPosition *touch)
{
int mx, my;
if(b_mode == BOTTOM_SCREEN_MODE_KEYBOARD)
{
mx = touch->px * 4 - 320;
my = touch->py * 4 - (13 * 4);
if(mx < 0 || mx >= 640 || my < 0 || my >= 350)
return false;
}
else
{
int s_height = ctr_get_subscreen_height();
mx = touch->px * 2;
my = ((int)(touch->py - ((240 - s_height) / 2)) * 350 / s_height);
if(mx < 0) mx = 0;
if(mx >= 640) mx = 639;
if(my < 0) my = 0;
if(my >= 350) my = 349;
}
if(mx != status->mouse_pixel_x || my != status->mouse_pixel_y)
{
status->mouse_pixel_x = mx;
status->mouse_pixel_y = my;
status->mouse_x = mx / 8;
status->mouse_y = my / 14;
status->mouse_moved = true;
allow_focus_changes = FOCUS_PASS;
focus_pixel(mx, my);
allow_focus_changes = FOCUS_FORBID;
return true;
}
else
{
return false;
}
}
static inline boolean ctr_update_cstick(struct buffered_status *status)
{
circlePosition pos;
int dmx, dmy, nmx, nmy;
hidCstickRead(&pos);
dmx = pos.dx / 3;
dmy = pos.dy / 3;
if(dmx != 0 || dmy != 0)
{
nmx = status->mouse_pixel_x + dmx;
nmy = status->mouse_pixel_y + dmy;
if(nmx < 0) nmx = 0;
if(nmx >= 640) nmx = 639;
if(nmy < 0) nmy = 0;
if(nmy >= 350) nmy = 349;
if(nmx != status->mouse_pixel_x || nmy != status->mouse_pixel_y)
{
status->mouse_pixel_x = nmx;
status->mouse_pixel_y = nmy;
status->mouse_x = nmx / 8;
status->mouse_y = nmy / 14;
status->mouse_moved = true;
focus_pixel(nmx, nmy);
return true;
}
}
return false;
}
boolean update_hid(void)
{
struct buffered_status *status = store_status();
uint32_t down, held, up;
boolean retval = false;
touchPosition touch;
circlePosition cpad;
static circlePosition last_cpad;
hidScanInput();
hidCircleRead(&cpad);
down = hidKeysDown();
held = hidKeysHeld();
up = hidKeysUp();
retval |= check_circle(status, &cpad, &last_cpad, 0, 1);
retval |= check_hat(status, down, up, KEY_DUP, JOYHAT_UP);
retval |= check_hat(status, down, up, KEY_DDOWN, JOYHAT_DOWN);
retval |= check_hat(status, down, up, KEY_DLEFT, JOYHAT_LEFT);
retval |= check_hat(status, down, up, KEY_DRIGHT, JOYHAT_RIGHT);
retval |= check_joy(status, down, up, KEY_A, 0);
retval |= check_joy(status, down, up, KEY_B, 1);
retval |= check_joy(status, down, up, KEY_X, 2);
retval |= check_joy(status, down, up, KEY_Y, 3);
retval |= check_joy(status, down, up, KEY_L, 4);
retval |= check_joy(status, down, up, KEY_R, 5);
retval |= check_joy(status, down, up, KEY_SELECT, 6);
retval |= check_joy(status, down, up, KEY_START, 7);
retval |= check_joy(status, down, up, KEY_ZL, 8);
retval |= check_joy(status, down, up, KEY_ZR, 9);
last_cpad = cpad;
if((down | held | up) & KEY_TOUCH)
{
hidTouchRead(&touch);
if((down & KEY_TOUCH) && ctr_is_mouse_area(&touch))
{
status->mouse_button = MOUSE_BUTTON_LEFT;
status->mouse_repeat = MOUSE_BUTTON_LEFT;
status->mouse_button_state |= MOUSE_BUTTON(MOUSE_BUTTON_LEFT);
status->mouse_repeat_state = 1;
status->mouse_drag_state = -1;
status->mouse_time = get_ticks();
is_dragging = true;
allow_focus_changes = FOCUS_FORBID;
retval = true;
}
if(is_dragging)
{
if(up & KEY_TOUCH)
{
status->mouse_button_state &= ~MOUSE_BUTTON(MOUSE_BUTTON_LEFT);
status->mouse_repeat = 0;
status->mouse_repeat_state = 0;
status->mouse_drag_state = -0;
allow_focus_changes = FOCUS_ALLOW;
is_dragging = false;
retval = true;
}
else
{
retval |= ctr_update_touch(status, &touch);
}
}
retval |= ctr_keyboard_update(status);
}
// retval |= ctr_update_cstick(status);
return retval;
}
int ctr_get_subscreen_height(void)
{
switch(get_config()->video_ratio)
{
case RATIO_CLASSIC_4_3:
case RATIO_STRETCH:
return 240;
default:
return 175;
}
}
boolean platform_has_screen_keyboard(void)
{
return true;
}
boolean platform_show_screen_keyboard(void)
{
input.showing_screen_keyboard = true;
b_mode = BOTTOM_SCREEN_MODE_KEYBOARD;
return true;
}
boolean platform_hide_screen_keyboard(void)
{
input.showing_screen_keyboard = false;
b_mode = BOTTOM_SCREEN_MODE_PREVIEW;
return true;
}
boolean platform_is_screen_keyboard_active(void)
{
return input.showing_screen_keyboard;
}
void platform_init_event(void)
{
struct buffered_status *status = store_status();
joystick_set_active(status, 0, true);
joystick_map_fallback_keyboard_button(0, 5);
}
================================================
FILE: arch/3ds/event.h
================================================
/* MegaZeux
*
* Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
* Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
* Copyright (C) 2007 Alan Williams <mralert@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __3DS_EVENT_H__
#define __3DS_EVENT_H__
#include "../../src/event.h"
__M_BEGIN_DECLS
enum bottom_screen_mode
{
BOTTOM_SCREEN_MODE_PREVIEW,
BOTTOM_SCREEN_MODE_KEYBOARD,
BOTTOM_SCREEN_MODE_MAX
};
enum focus_mode
{
FOCUS_FORBID,
FOCUS_ALLOW, // checks if position changed
FOCUS_PASS // ignores all checks and check updates - for touchscreen
};
enum bottom_screen_mode get_bottom_screen_mode(void);
enum focus_mode get_allow_focus_changes(void);
int ctr_get_subscreen_height(void);
__M_END_DECLS
#endif /* __3DS_EVENT_H__ */
================================================
FILE: arch/3ds/keyboard.c
================================================
/* MegaZeux
*
* Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
* Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
* Copyright (C) 2007 Alan Williams <mralert@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "../../src/event.h"
#include "../../src/util.h"
#include <3ds.h>
#include <citro3d.h>
#include "event.h"
#include "keyboard.h"
#include "platform.h"
#include "render.h"
#define MAX_KEYS_DOWN 8
C3D_Tex *keyboard_tex;
static enum keycode keys_down[] =
{
IKEY_UNKNOWN, IKEY_UNKNOWN, IKEY_UNKNOWN, IKEY_UNKNOWN,
IKEY_UNKNOWN, IKEY_UNKNOWN, IKEY_UNKNOWN, IKEY_UNKNOWN
};
static u8 keys_down_count = 0;
static boolean force_zoom_out = false;
static touch_area_t touch_areas[] =
{
{ 2, 118, 22, 16, IKEY_ESCAPE, 0 },
{ 23, 118, 22, 16, IKEY_F1, 0 },
{ 44, 118, 22, 16, IKEY_F2, 0 },
{ 65, 118, 22, 16, IKEY_F3, 0 },
{ 86, 118, 22, 16, IKEY_F4, 0 },
{ 107, 118, 22, 16, IKEY_F5, 0 },
{ 128, 118, 22, 16, IKEY_F6, 0 },
{ 149, 118, 22, 16, IKEY_F7, 0 },
{ 170, 118, 22, 16, IKEY_F8, 0 },
{ 191, 118, 22, 16, IKEY_F9, 0 },
{ 212, 118, 22, 16, IKEY_F10, 0 },
{ 233, 118, 22, 16, IKEY_F11, 0 },
{ 254, 118, 22, 16, IKEY_F12, 0 },
{ 275, 118, 22, 16, IKEY_INSERT, 0 },
{ 296, 118, 22, 16, IKEY_DELETE, 0 },
{ 2, 133, 22, 22, IKEY_BACKQUOTE, 0 },
{ 23, 133, 22, 22, IKEY_1, 0 },
{ 44, 133, 22, 22, IKEY_2, 0 },
{ 65, 133, 22, 22, IKEY_3, 0 },
{ 86, 133, 22, 22, IKEY_4, 0 },
{ 107, 133, 22, 22, IKEY_5, 0 },
{ 128, 133, 22, 22, IKEY_6, 0 },
{ 149, 133, 22, 22, IKEY_7, 0 },
{ 170, 133, 22, 22, IKEY_8, 0 },
{ 191, 133, 22, 22, IKEY_9, 0 },
{ 212, 133, 22, 22, IKEY_0, 0 },
{ 233, 133, 22, 22, IKEY_MINUS, 0 },
{ 254, 133, 22, 22, IKEY_EQUALS, 0 },
{ 275, 133, 43, 22, IKEY_BACKSPACE, 0 },
{ 2, 154, 34, 22, IKEY_TAB, 0 },
{ 35, 154, 22, 22, IKEY_q, 0 },
{ 56, 154, 22, 22, IKEY_w, 0 },
{ 77, 154, 22, 22, IKEY_e, 0 },
{ 98, 154, 22, 22, IKEY_r, 0 },
{ 119, 154, 22, 22, IKEY_t, 0 },
{ 140, 154, 22, 22, IKEY_y, 0 },
{ 161, 154, 22, 22, IKEY_u, 0 },
{ 182, 154, 22, 22, IKEY_i, 0 },
{ 203, 154, 22, 22, IKEY_o, 0 },
{ 224, 154, 22, 22, IKEY_p, 0 },
{ 245, 154, 22, 22, IKEY_LEFTBRACKET, 0 },
{ 266, 154, 22, 22, IKEY_RIGHTBRACKET, 0 },
{ 287, 154, 31, 22, IKEY_BACKSLASH, 0 },
{ 2, 175, 41, 22, IKEY_LCTRL, 0 },
{ 42, 175, 22, 22, IKEY_a, 0 },
{ 63, 175, 22, 22, IKEY_s, 0 },
{ 84, 175, 22, 22, IKEY_d, 0 },
{ 105, 175, 22, 22, IKEY_f, 0 },
{ 126, 175, 22, 22, IKEY_g, 0 },
{ 147, 175, 22, 22, IKEY_h, 0 },
{ 168, 175, 22, 22, IKEY_j, 0 },
{ 189, 175, 22, 22, IKEY_k, 0 },
{ 210, 175, 22, 22, IKEY_l, 0 },
{ 231, 175, 22, 22, IKEY_SEMICOLON, 0 },
{ 252, 175, 22, 22, IKEY_QUOTE, 0 },
{ 273, 175, 45, 22, IKEY_RETURN, 0 },
{ 2, 196, 54, 22, IKEY_LSHIFT, 0 },
{ 55, 196, 22, 22, IKEY_z, 0 },
{ 76, 196, 22, 22, IKEY_x, 0 },
{ 97, 196, 22, 22, IKEY_c, 0 },
{ 118, 196, 22, 22, IKEY_v, 0 },
{ 139, 196, 22, 22, IKEY_b, 0 },
{ 160, 196, 22, 22, IKEY_n, 0 },
{ 181, 196, 22, 22, IKEY_m, 0 },
{ 202, 196, 22, 22, IKEY_COMMA, 0 },
{ 223, 196, 22, 22, IKEY_PERIOD, 0 },
{ 244, 196, 22, 22, IKEY_SLASH, 0 },
{ 265, 196, 53, 22, IKEY_RSHIFT, 0 },
{ 29, 217, 37, 22, IKEY_LALT, 0 },
{ 65, 217, 190, 22, IKEY_SPACE, 0 },
{ 254, 217, 37, 22, IKEY_RALT, 0 }
};
#define touch_areas_len (sizeof(touch_areas) / sizeof(touch_area_t))
static inline boolean ctr_is_modifier(enum keycode keycode)
{
return keycode >= IKEY_RSHIFT && keycode <= IKEY_RSUPER;
}
static inline boolean ctr_key_touched(touchPosition *pos, touch_area_t *area)
{
return (pos->px >= area->x) && (pos->py >= area->y) &&
(pos->px < (area->x + area->w)) && (pos->py < (area->y + area->h));
}
boolean ctr_keyboard_force_zoom_out(void)
{
return force_zoom_out;
}
void ctr_keyboard_init(struct ctr_render_data *render_data)
{
keyboard_tex = ctr_load_png("romfs:/kbd_display.png");
}
void ctr_keyboard_draw(struct ctr_render_data *render_data)
{
size_t i, j;
ctr_draw_2d_texture(render_data, keyboard_tex, 0, 0, 320, 240, 0, 0, 320, 240,
4.0f, 0xffffffff, false);
if(ctr_is_2d())
{
ctr_draw_2d_texture(render_data, keyboard_tex, force_zoom_out ? 16 : 0, 240,
16, 16, 302, 2, 16, 16, 3.0f, 0xffffffff, false);
}
if(ctr_supports_wide())
{
ctr_draw_2d_texture(render_data, keyboard_tex, gfxIsWide() ? 48 : 32, 240,
16, 16, 284, 2, 16, 16, 3.0f, 0xffffffff, false);
}
if(keys_down_count > 0)
{
for(i = 0; i < touch_areas_len; i++)
{
touch_area_t *area = &touch_areas[i];
for(j = 0; j < keys_down_count; j++)
{
if(keys_down[j] == area->keycode)
{
ctr_draw_2d_texture(render_data, keyboard_tex, area->x,
240 - area->y - area->h, area->w, area->h,
area->x, area->y + 1, area->w, area->h - 1,
3.0f, 0x808080ff, false);
break;
}
}
}
}
}
boolean ctr_keyboard_update(struct buffered_status *status)
{
touchPosition pos;
u32 down, up, i;
boolean retval = false;
u32 unicode;
if(get_bottom_screen_mode() != BOTTOM_SCREEN_MODE_KEYBOARD)
return retval;
down = hidKeysDown();
up = hidKeysUp();
hidTouchRead(&pos);
if(down & KEY_TOUCH)
{
if(ctr_is_2d() && pos.px >= 302 && pos.py >= 2 && pos.px < 318 &&
pos.py < 18)
{
force_zoom_out = !force_zoom_out;
}
else
if(ctr_supports_wide() && pos.px >= 284 && pos.py >= 2 &&
pos.px < 300 && pos.py < 18)
{
ctr_request_set_wide(!gfxIsWide());
}
for(i = 0; i < touch_areas_len; i++)
{
touch_area_t *area = &touch_areas[i];
if(ctr_key_touched(&pos, area))
{
unicode = convert_internal_unicode(area->keycode, false);
key_press(status, area->keycode);
key_press_unicode(status, unicode, true);
keys_down[keys_down_count++] = area->keycode;
retval = true;
break;
}
}
}
if(up & KEY_TOUCH && keys_down_count > 0 &&
!ctr_is_modifier(keys_down[keys_down_count - 1]))
{
for(; keys_down_count > 0; keys_down_count--)
{
key_release(status, keys_down[keys_down_count - 1]);
keys_down[keys_down_count - 1] = IKEY_UNKNOWN;
}
retval = true;
}
return retval;
}
================================================
FILE: arch/3ds/keyboard.h
================================================
/* MegaZeux
*
* Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
* Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
* Copyright (C) 2007 Alan Williams <mralert@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __3DS_KEYBOARD_H__
#define __3DS_KEYBOARD_H__
#include "../../src/event.h"
#include "render.h"
__M_BEGIN_DECLS
typedef struct
{
u16 x, y, w, h;
enum keycode keycode;
u8 flags;
} touch_area_t;
void ctr_keyboard_init(struct ctr_render_data *render_data);
void ctr_keyboard_draw(struct ctr_render_data *render_data);
boolean ctr_keyboard_update(struct buffered_status *status);
boolean ctr_keyboard_force_zoom_out(void);
__M_END_DECLS
#endif /* __3DS_KEYBOARD_H__ */
================================================
FILE: arch/3ds/pad.config
================================================
# Axis 1/2: Circle pad x/y
# Hat: Directional pad
# Button1: A
# Button2: B
# Button3: X
# Button4: Y
# Button5: Left shoulder
# Button6: Right shoulder
# Button7: Select
# Button8: Start
# Button9: ZL (NOTE: New 3DS only)
# Button10: ZR (NOTE: New 3DS only)
joy_axis_threshold = 16000
joy1hat = act_up, act_down, act_left, act_right
joy1axis1 = act_l_left, act_l_right
joy1axis2 = act_l_up, act_l_down
joy1button1 = act_a
joy1button2 = act_b
joy1button3 = act_x
joy1button4 = act_y
joy1button5 = act_lshoulder
joy1button6 = act_rshoulder
joy1button7 = act_select
joy1button8 = act_start
joy1button9 = act_ltrigger
joy1button10 = act_rtrigger
joy1.axis_lx = 1
joy1.axis_ly = 2
================================================
FILE: arch/3ds/pad.config.sdl12
================================================
# Axis 1/2: Circle pad x/y
# Hat: Directional pad
# Button1: Start
# Button2: A
# Button3: B
# Button4: X
# Button5: Y
# Button6: Left shoulder
# Button7: Right shoulder
# Button8: Select
# Button9: ZL (NOTE: New 3DS only)
# Button10: ZR (NOTE: New 3DS only)
joy1hat = act_up, act_down, act_left, act_right
joy1axis1 = act_l_left, act_l_right
joy1axis2 = act_l_up, act_l_down
joy1button1 = act_start
joy1button2 = act_a
joy1button3 = act_b
joy1button4 = act_x
joy1button5 = act_y
joy1button6 = act_lshoulder
joy1button7 = act_rshoulder
joy1button8 = act_select
joy1button9 = act_ltrigger
joy1button10 = act_rtrigger
joy1.axis_lx = 1
joy1.axis_ly = 2
================================================
FILE: arch/3ds/pad.config.sdl2
================================================
# Axis 1/2: Circle pad x/y
# Button1: A
# Button2: B
# Button3: Select
# Button4: Start
# Button5: Right
# Button6: Left
# Button7: Up
# Button8: Down
# Button9: Right shoulder
# Button10: Left shoulder
# Button11: X
# Button12: Y
# Button15: ZL (NOTE: New 3DS only)
# Button16: ZR (NOTE: New 3DS only)
joy1axis1 = act_l_left, act_l_right
joy1axis2 = act_l_up, act_l_down
joy1button1 = act_a
joy1button2 = act_b
joy1button3 = act_select
joy1button4 = act_start
joy1button5 = act_right
joy1button6 = act_left
joy1button7 = act_up
joy1button8 = act_down
joy1button9 = act_rshoulder
joy1button10 = act_lshoulder
joy1button11 = act_x
joy1button12 = act_y
joy1button15 = act_ltrigger
joy1button16 = act_rtrigger
joy1.axis_lx = 1
joy1.axis_ly = 2
================================================
FILE: arch/3ds/platform.c
================================================
/* MegaZeux
*
* Copyright (C) 2009 Alistair John Strachan <alistair@devzero.co.uk>
* Copyright (C) 2007-2009 Kevin Vance <kvance@kvance.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdarg.h>
#include "platform.h"
#include "../../src/platform.h"
#undef main
#include "../../src/util.h"
#include "../../src/event.h"
#include "../../src/error.h"
#include "../../src/graphics.h"
#include <unistd.h>
#include <stdio.h>
#include <3ds.h>
#include <citro3d.h>
#include "keyboard.h"
static u8 isNot2DS, consoleModelId;
FILE *popen(const char *command, const char *type)
{
return NULL;
}
int pclose(FILE *stream)
{
return 0;
}
void delay(uint32_t ms)
{
if(ms > 0)
{
svcSleepThread(1e6 * ms);
}
}
boolean ctr_is_2d(void)
{
return isNot2DS == 0;
}
boolean ctr_supports_wide(void)
{
return consoleModelId != 3 /* O2DS */;
}
uint64_t get_ticks(void)
{
return osGetTime();
}
boolean platform_init(void)
{
cfguInit();
romfsInit();
osSetSpeedupEnable(1);
APT_SetAppCpuTimeLimit(30);
gfxInitDefault();
gfxSet3D(false);
CFGU_GetSystemModel(&consoleModelId);
CFGU_GetModelNintendo2DS(&isNot2DS);
return true;
}
void platform_quit(void)
{
gfxExit();
romfsExit();
cfguExit();
}
#ifdef CONFIG_CHECK_ALLOC
static void out_of_linear_memory_check(void *p, const char *file, int line)
{
char msgbuf[128];
if(!p)
{
snprintf(msgbuf, sizeof(msgbuf), "Out of linear memory in %s:%d",
file, line);
msgbuf[sizeof(msgbuf)-1] = '\0';
error(msgbuf, 2, 4, 0);
}
}
void *check_linearAlloc(size_t size, size_t alignment, const char *file,
int line)
{
void *result = linearMemAlign(size, alignment);
out_of_linear_memory_check(result, file, line);
return result;
}
#endif
/**
* argv[0] will either not exist (cia) or be the location of the 3dsx.
* For the cia case we can't really do anything, so assume a SHAREDIR
* startup location.
*/
int main(int argc, char *argv[])
{
static char _argv0[] = SHAREDIR "/mzxrun.3dsx";
static char *_argv[] = { _argv0 };
if(argc < 1 || argv == NULL || argv[0] == NULL)
{
iprintf("argv[0]: not found.\n"
"using '%s'\n"
"WARNING: Use of a loader that supports argv[0] is recommended.\n",
_argv0);
chdir(SHAREDIR);
real_main(1, _argv);
}
else
{
iprintf("argv[0]: '%s'\n", argv[0]);
real_main(argc, argv);
}
return 0;
}
================================================
FILE: arch/3ds/platform.h
================================================
/* MegaZeux
*
* Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
* Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
* Copyright (C) 2007 Alan Williams <mralert@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __3DS_PLATFORM_H__
#define __3DS_PLATFORM_H__
#include "../../src/compat.h"
#include <stdlib.h>
#include <3ds.h>
#include <citro3d.h>
__M_BEGIN_DECLS
boolean ctr_is_2d(void);
boolean ctr_supports_wide(void);
#ifdef CONFIG_CHECK_ALLOC
#include <stddef.h>
#define clinearAlloc(size, alignment) \
check_linearAlloc(size, alignment, __FILE__, __LINE__)
void *check_linearAlloc(size_t size, size_t alignment, const char *file,
int line);
#else
static inline void *clinearAlloc(size_t size)
{
return linearAlloc(size);
}
#endif /* CONFIG_CHECK_ALLOC */
__M_END_DECLS
#endif /* __3DS_PLATFORM_H__ */
================================================
FILE: arch/3ds/render.cpp
================================================
/* MegaZeux
*
* Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
* Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
* Copyright (C) 2007 Alan Williams <mralert@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "../../src/graphics.h"
#include "../../src/pngops.h"
#include "../../src/render.h"
#include "../../src/renderers.h"
#include "../../src/util.h"
#include "event.h"
#include "keyboard.h"
#include "platform.h"
#include "render.h"
#include "shader_2d_shbin.h"
#include "shader_playfield_shbin.h"
//#define RDR_DEBUG
struct ctr_shader_data
{
DVLB_s *dvlb;
shaderProgram_s program;
int proj_loc, offs_loc, geo_count;
C3D_AttrInfo attr;
};
struct ctr_layer
{
unsigned int w, h, mode;
float z;
int draw_order;
boolean has_background_texture;
struct v_char *foreground;
C3D_Tex background;
};
struct v_char
{
s16 x, y;
u32 uv;
u32 col;
};
struct vertex
{
float x, y, w, h;
float z;
float tx, ty, tw, th;
u32 color;
};
struct linear_ptr_list_entry
{
void *ptr;
struct linear_ptr_list_entry *next;
};
#define CTR_TOP_WIDTH (gfxIsWide() ? 800 : 400)
#define CTR_TOP_HEIGHT 240
#define CTR_CHAR_H 16
#define CTR_TEXTURE_WIDTH 1024
#define CTR_TEXTURE_CHARS_ROW (CTR_TEXTURE_WIDTH / CHAR_W)
#define CTR_TEXTURE_HEIGHT ((FULL_CHARSET_SIZE / CTR_TEXTURE_CHARS_ROW) * CTR_CHAR_H)
#define CTR_LAYER_MAX (LAYER_DRAWORDER_MAX + 101)
#define CTR_LAYER_CURSOR (LAYER_DRAWORDER_MAX + 50)
#define CTR_LAYER_MOUSE (LAYER_DRAWORDER_MAX + 75)
struct ctr_render_data
{
C3D_Tex charset[5], charset_vram[5];
u8 charset_dirty_set;
u8 charset_dirty[NUM_CHARSETS * 2];
boolean rendering_frame, checked_frame;
struct ctr_shader_data shader_2d, shader_playfield;
C3D_Mtx projection;
C3D_Tex playfield_tex;
C3D_TexEnv env_normal, env_no_texture, env_playfield, env_playfield_inv;
C3D_RenderTarget *playfield, *target_top, *target_bottom;
u8 cursor_on, mouse_on;
u32 last_focus_x, last_focus_y;
u32 focus_x, focus_y;
u32 layer_num;
};
static u8 morton_lut[64] =
{
0x00, 0x01, 0x04, 0x05, 0x10, 0x11, 0x14, 0x15,
0x02, 0x03, 0x06, 0x07, 0x12, 0x13, 0x16, 0x17,
0x08, 0x09, 0x0c, 0x0d, 0x18, 0x19, 0x1c, 0x1d,
0x0a, 0x0b, 0x0e, 0x0f, 0x1a, 0x1b, 0x1e, 0x1f,
0x20, 0x21, 0x24, 0x25, 0x30, 0x31, 0x34, 0x35,
0x22, 0x23, 0x26, 0x27, 0x32, 0x33, 0x36, 0x37,
0x28, 0x29, 0x2c, 0x2d, 0x38, 0x39, 0x3c, 0x3d,
0x2a, 0x2b, 0x2e, 0x2f, 0x3a, 0x3b, 0x3e, 0x3f
};
static u8 morton_lut4[32] =
{
0x00, 0x02, 0x08, 0x0a, 0x01, 0x03, 0x09, 0x0b,
0x04, 0x06, 0x0c, 0x0e, 0x05, 0x07, 0x0d, 0x0f,
0x10, 0x12, 0x18, 0x1a, 0x11, 0x13, 0x19, 0x1b,
0x14, 0x16, 0x1c, 0x1e, 0x15, 0x17, 0x1d, 0x1f
};
// 2 char bits -> 8 texture bits
static u8 bitmask_mzx[4] = { 0x00, 0xf0, 0x0f, 0xff };
// 4 char bits -> 8 texture bits
// bitmask_smzx[layer, 0-3][bits]
static u8 bitmask_smzx[4][16] =
{
{ 0xff, 0x0f, 0x0f, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00 },
{ 0x00, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0x0f,
0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00 },
{ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00,
0x0f, 0x0f, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0x00 },
{ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0xf0, 0x0f, 0x0f, 0x0f, 0xff }
};
// texture PNG dimensions must be powers of two
static boolean tex_w_h_constraint(png_uint_32 w, png_uint_32 h)
{
return w > 0 && h > 0 && ((w & (w - 1)) == 0) && ((h & (h - 1)) == 0);
}
static inline int to_texture_size(int v)
{
int i;
for(i = 8; i <= 65536; i *= 2)
if(i >= v)
return i;
return v;
}
static void *tex_alloc_png_surface(png_uint_32 w, png_uint_32 h,
png_uint_32 *stride, void **pixels)
{
C3D_Tex *tex;
tex = (C3D_Tex *) ccalloc(1, sizeof(C3D_Tex));
*stride = w << 2;
if(!C3D_TexInit(tex, w, h, GPU_RGBA8))
{
free(tex);
return NULL;
}
*pixels = tex->data;
return tex;
}
static inline void ctr_set_2d_projection(struct ctr_render_data *render_data,
int width, int height, boolean tilt)
{
if(tilt)
Mtx_OrthoTilt(&render_data->projection, 0, width, height, 0, -1.0, CTR_LAYER_MAX,
true);
else
Mtx_Ortho(&render_data->projection, 0, width, 0, height, -1.0, CTR_LAYER_MAX,
true);
}
static inline void ctr_set_2d_projection_screen(
struct ctr_render_data *render_data, boolean top_screen)
{
ctr_set_2d_projection(render_data, top_screen ? 400 : 320, 240, true);
}
static void ctr_bind_shader(struct ctr_shader_data *shader)
{
C3D_BindProgram(&shader->program);
C3D_SetAttrInfo(&shader->attr);
}
static inline void ctr_prepare_2d(struct ctr_render_data *render_data,
struct vertex *array)
{
C3D_BufInfo *bufInfo;
bufInfo = C3D_GetBufInfo();
BufInfo_Init(bufInfo);
BufInfo_Add(bufInfo, array, sizeof(struct vertex), 4, 0x3210);
ctr_bind_shader(&render_data->shader_2d);
C3D_FVUnifMtx4x4(GPU_GEOMETRY_SHADER, render_data->shader_2d.proj_loc,
&render_data->projection);
}
static inline void ctr_prepare_playfield(struct ctr_render_data *render_data,
struct v_char *array, float xo, float yo, float z)
{
C3D_BufInfo *bufInfo;
bufInfo = C3D_GetBufInfo();
BufInfo_Init(bufInfo);
BufInfo_Add(bufInfo, array, sizeof(struct v_char), 3, 0x210);
ctr_bind_shader(&render_data->shader_playfield);
C3D_FVUnifMtx4x4(GPU_GEOMETRY_SHADER, render_data->shader_playfield.proj_loc,
&render_data->projection);
C3D_FVUnifSet(GPU_GEOMETRY_SHADER, render_data->shader_playfield.offs_loc,
(float) xo, (float) yo, z, 0.0f);
}
C3D_Tex *ctr_load_png(const char *name)
{
C3D_Tex *output;
u16 width, height;
u32 *data, *dataBuf;
int i;
output = (C3D_Tex *) png_read_file(name, NULL, NULL, tex_w_h_constraint,
tex_alloc_png_surface);
if(output != NULL)
{
C3D_TexSetWrap(output, GPU_CLAMP_TO_BORDER, GPU_CLAMP_TO_BORDER);
data = (u32 *)output->data;
dataBuf = (u32 *)clinearAlloc(output->size, 0x10);
for(i = 0; i < output->size >> 2; i++)
dataBuf[i] = __builtin_bswap32(data[i]);
width = output->width;
height = output->height;
C3D_TexDelete(output);
C3D_TexInitVRAM(output, width, height, GPU_RGBA8);
data = (u32*) output->data;
GSPGPU_FlushDataCache(dataBuf, output->size);
C3D_SyncDisplayTransfer(
dataBuf,
GX_BUFFER_DIM(output->width, output->height),
data,
GX_BUFFER_DIM(output->width, output->height),
(GX_TRANSFER_FLIP_VERT(0) |
GX_TRANSFER_OUT_TILED(1) |
GX_TRANSFER_RAW_COPY(0) |
GX_TRANSFER_IN_FORMAT(GPU_RGBA8) |
GX_TRANSFER_OUT_FORMAT(GPU_RGBA8) |
GX_TRANSFER_SCALING(GX_TRANSFER_SCALE_NO))
);
linearFree(dataBuf);
}
return output;
}
static int vertex_heap_pos = 0, vertex_heap_len = 0;
static struct vertex *vertex_heap;
void ctr_draw_2d_texture(struct ctr_render_data *render_data, C3D_Tex *texture,
int tx, int ty, int tw, int th,
float x, float y, float w, float h, float z, u32 color, boolean flipy)
{
struct vertex *vertices;
if(flipy && texture != NULL)
{
ty = texture->height - ty;
th = -th;
}
if(vertex_heap_len == 0)
{
vertex_heap_len = 64;
vertex_heap = (struct vertex *) clinearAlloc(sizeof(struct vertex) * vertex_heap_len, 0x80);
}
else
if(vertex_heap_pos + 1 > vertex_heap_len)
{
struct vertex *vertex_heap_new =
(struct vertex *) clinearAlloc(sizeof(struct vertex) * vertex_heap_len * 2, 0x80);
memcpy(vertex_heap_new, vertex_heap,
sizeof(struct vertex) * vertex_heap_len);
vertex_heap_len *= 2;
linearFree(vertex_heap);
vertex_heap = vertex_heap_new;
}
vertices = &vertex_heap[vertex_heap_pos];
vertex_heap_pos++;
vertices[0].x = x;
vertices[0].y = y;
vertices[0].w = w;
vertices[0].h = h;
vertices[0].z = z;
vertices[0].color = color;
ctr_prepare_2d(render_data, vertex_heap);
if(texture != NULL)
{
vertices[0].tx = tx / ((float) texture->width);
vertices[0].ty = ty / ((float) texture->height);
vertices[0].tw = tw / ((float) texture->width);
vertices[0].th = th / ((float) texture->height);
C3D_SetTexEnv(0, &(render_data->env_normal));
C3D_TexBind(0, texture);
}
else
{
vertices[0].tx = tx;
vertices[0].ty = ty;
vertices[0].tw = tw;
vertices[0].th = th;
C3D_SetTexEnv(0, &(render_data->env_no_texture));
}
C3D_DrawArrays(GPU_GEOMETRY_PRIM, vertex_heap_pos - 1, 1);
}
static void ctr_init_shader(struct ctr_shader_data *shader, const void *data,
int size, int geo_count)
{
shader->dvlb = DVLB_ParseFile((u32 *)data, size);
shader->geo_count = geo_count;
shaderProgramInit(&shader->program);
shaderProgramSetVsh(&shader->program, &shader->dvlb->DVLE[0]);
shaderProgramSetGsh(&shader->program, &shader->dvlb->DVLE[1], geo_count);
shader->proj_loc =
shaderInstanceGetUniformLocation(shader->program.geometryShader, "projection");
shader->offs_loc =
shaderInstanceGetUniformLocation(shader->program.geometryShader, "offset");
AttrInfo_Init(&shader->attr);
}
static boolean wide_requested = false, wide_new_state;
void ctr_request_set_wide(bool wide)
{
wide_requested = true;
wide_new_state = wide;
}
static void ctr_set_wide(struct ctr_render_data *render_data, bool wide)
{
gfxSetWide(wide);
C3D_RenderTargetDelete(render_data->target_top);
render_data->target_top =
C3D_RenderTargetCreate(240, CTR_TOP_WIDTH, GPU_RB_RGB8, GPU_RB_DEPTH16);
C3D_RenderTargetClear(render_data->target_top, C3D_CLEAR_ALL, 0x000000, 0);
C3D_RenderTargetSetOutput(render_data->target_top, GFX_TOP, GFX_LEFT,
GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGB8) |
GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8));
}
static boolean ctr_init_video(struct graphics_data *graphics,
struct config_info *conf)
{
static struct ctr_render_data render_data;
unsigned int bits_per_pixel = 16;
#ifdef RDR_DEBUG
consoleInit(GFX_TOP, NULL);
#endif
memset(&render_data, 0, sizeof(struct ctr_render_data));
graphics->render_data = &render_data;
gfxSet3D(false);
C3D_Init(0x40000);
C3D_CullFace(GPU_CULL_NONE);
render_data.rendering_frame = false;
render_data.checked_frame = false;
if(conf->force_bpp == 32)
bits_per_pixel = conf->force_bpp;
// 1024x512 is the smallest power of two texture which can fit a 640x350 playfield
if(bits_per_pixel == 32)
C3D_TexInitVRAM(&render_data.playfield_tex, 1024, 512, GPU_RGBA8);
else
C3D_TexInitVRAM(&render_data.playfield_tex, 1024, 512, GPU_RGB565);
C3D_TexSetFilter(&render_data.playfield_tex, GPU_LINEAR, GPU_LINEAR);
render_data.playfield =
C3D_RenderTargetCreateFromTex(&render_data.playfield_tex, GPU_TEXFACE_2D, 0,
GPU_RB_DEPTH16);
render_data.target_top =
C3D_RenderTargetCreate(240, 400, GPU_RB_RGB8, GPU_RB_DEPTH16);
render_data.target_bottom =
C3D_RenderTargetCreate(240, 320, GPU_RB_RGB8, GPU_RB_DEPTH16);
C3D_RenderTargetClear(render_data.playfield, C3D_CLEAR_ALL, 0x000000, 0);
C3D_RenderTargetClear(render_data.target_top, C3D_CLEAR_ALL, 0x000000, 0);
C3D_RenderTargetClear(render_data.target_bottom, C3D_CLEAR_ALL, 0x000000, 0);
C3D_RenderTargetSetOutput(render_data.target_top, GFX_TOP, GFX_LEFT,
GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGB8) |
GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8));
C3D_RenderTargetSetOutput(render_data.target_bottom, GFX_BOTTOM, GFX_LEFT,
GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGB8) |
GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8));
ctr_init_shader(&render_data.shader_2d,
shader_2d_shbin, shader_2d_shbin_size, 4);
ctr_init_shader(&render_data.shader_playfield,
shader_playfield_shbin, shader_playfield_shbin_size, 3);
// v0 = x,y,w,h
// v1 = z
// v2 = tx,ty,tw,th
// v3 = color
AttrInfo_AddLoader(&render_data.shader_2d.attr, 0, GPU_FLOAT, 4);
AttrInfo_AddLoader(&render_data.shader_2d.attr, 1, GPU_FLOAT, 1);
AttrInfo_AddLoader(&render_data.shader_2d.attr, 2, GPU_FLOAT, 4);
AttrInfo_AddLoader(&render_data.shader_2d.attr, 3, GPU_UNSIGNED_BYTE, 4);
// v0 = position
// v1 = texcoord
// v2 = color
AttrInfo_AddLoader(&render_data.shader_playfield.attr, 0, GPU_SHORT, 2);
AttrInfo_AddLoader(&render_data.shader_playfield.attr, 1, GPU_SHORT, 2);
AttrInfo_AddLoader(&render_data.shader_playfield.attr, 2, GPU_UNSIGNED_BYTE, 4);
for(int i = 0; i < 5; i++)
{
int tex_width = CTR_TEXTURE_WIDTH;
if(i > 0)
tex_width /= 2;
C3D_TexInit(&render_data.charset[i], tex_width,
CTR_TEXTURE_HEIGHT, GPU_A4);
C3D_TexSetFilter(&render_data.charset[i], GPU_NEAREST, GPU_NEAREST);
C3D_TexSetWrap(&render_data.charset[i], GPU_REPEAT, GPU_REPEAT);
C3D_TexInitVRAM(&render_data.charset_vram[i], tex_width,
CTR_TEXTURE_HEIGHT, GPU_A4);
C3D_TexSetFilter(&render_data.charset_vram[i], GPU_NEAREST, GPU_NEAREST);
C3D_TexSetWrap(&render_data.charset_vram[i], GPU_REPEAT, GPU_REPEAT);
}
C3D_TexEnvInit(&(render_data.env_normal));
C3D_TexEnvSrc(&(render_data.env_normal), C3D_Both, GPU_TEXTURE0, (GPU_TEVSRC) 0, (GPU_TEVSRC) 0);
C3D_TexEnvOpRgb(&(render_data.env_normal), (GPU_TEVOP_RGB) 0, (GPU_TEVOP_RGB) 0, (GPU_TEVOP_RGB) 0);
C3D_TexEnvOpAlpha(&(render_data.env_normal), (GPU_TEVOP_A) 0, (GPU_TEVOP_A) 0, (GPU_TEVOP_A) 0);
C3D_TexEnvFunc(&(render_data.env_normal), C3D_Both, GPU_MODULATE);
C3D_TexEnvInit(&(render_data.env_no_texture));
C3D_TexEnvSrc(&(render_data.env_no_texture), C3D_Both, GPU_PRIMARY_COLOR, (GPU_TEVSRC) 0, (GPU_TEVSRC) 0);
C3D_TexEnvOpRgb(&(render_data.env_no_texture), (GPU_TEVOP_RGB) 0, (GPU_TEVOP_RGB) 0, (GPU_TEVOP_RGB) 0);
C3D_TexEnvOpAlpha(&(render_data.env_no_texture), (GPU_TEVOP_A) 0, (GPU_TEVOP_A) 0, (GPU_TEVOP_A) 0);
C3D_TexEnvFunc(&(render_data.env_no_texture), C3D_Both, GPU_REPLACE);
C3D_TexEnvInit(&(render_data.env_playfield));
C3D_TexEnvSrc(&(render_data.env_playfield), C3D_RGB, (GPU_TEVSRC) 0, GPU_PRIMARY_COLOR, (GPU_TEVSRC) 0);
C3D_TexEnvSrc(&(render_data.env_playfield), C3D_Alpha, (GPU_TEVSRC) 0, GPU_TEXTURE0, (GPU_TEVSRC) 0);
C3D_TexEnvOpRgb(&(render_data.env_playfield), (GPU_TEVOP_RGB) 0, GPU_TEVOP_RGB_SRC_ALPHA, (GPU_TEVOP_RGB) 0);
C3D_TexEnvOpAlpha(&(render_data.env_playfield), (GPU_TEVOP_A) 0, GPU_TEVOP_A_SRC_ALPHA, (GPU_TEVOP_A) 0);
C3D_TexEnvFunc(&(render_data.env_playfield), C3D_Both, GPU_MODULATE);
C3D_TexEnvInit(&(render_data.env_playfield_inv));
C3D_TexEnvSrc(&(render_data.env_playfield_inv), C3D_RGB, (GPU_TEVSRC) 0, GPU_PRIMARY_COLOR, (GPU_TEVSRC) 0);
C3D_TexEnvSrc(&(render_data.env_playfield_inv), C3D_Alpha, (GPU_TEVSRC) 0, GPU_TEXTURE0, (GPU_TEVSRC) 0);
C3D_TexEnvOpRgb(&(render_data.env_playfield_inv), (GPU_TEVOP_RGB) 0, GPU_TEVOP_RGB_SRC_ALPHA, (GPU_TEVOP_RGB) 0);
C3D_TexEnvOpAlpha(&(render_data.env_playfield_inv), (GPU_TEVOP_A) 0, GPU_TEVOP_A_ONE_MINUS_SRC_ALPHA, (GPU_TEVOP_A) 0);
C3D_TexEnvFunc(&(render_data.env_playfield_inv), C3D_Both, GPU_MODULATE);
C3D_AlphaTest(false, GPU_GREATER, 0x80);
C3D_DepthTest(false, GPU_GEQUAL, GPU_WRITE_ALL);
graphics->allow_resize = 0;
graphics->bits_per_pixel = bits_per_pixel;
graphics->resolution_width = 640;
graphics->resolution_height = 350;
graphics->window_width = 640;
graphics->window_height = 350;
ctr_keyboard_init(&render_data);
return true;
}
static void ctr_free_video(struct graphics_data *graphics)
{
// TODO: more freeing!
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
int i;
for(i = 0; i < 5; i++)
{
C3D_TexDelete(&render_data->charset[i]);
C3D_TexDelete(&render_data->charset_vram[i]);
}
C3D_TexDelete(&render_data->playfield_tex);
C3D_RenderTargetDelete(render_data->playfield);
C3D_RenderTargetDelete(render_data->target_top);
C3D_RenderTargetDelete(render_data->target_bottom);
C3D_Fini();
}
static boolean ctr_create_window(struct graphics_data *graphics,
struct video_window *window)
{
return true;
}
static void ctr_update_colors(struct graphics_data *graphics,
struct rgb_color *palette, unsigned int count)
{
unsigned int i;
for(i = 0; i < count; i++)
{
graphics->flat_intensity_palette[i] =
(palette[i].r << 24) | (palette[i].g << 16) |
(palette[i].b << 8) | 0x000000FF;
}
}
static inline u32 ctr_get_char_texture_row(u32 chr)
{
return chr / CTR_TEXTURE_CHARS_ROW;
}
/**
* This method takes a single character line "c" for character "chr" and
* Y position "y" and writes it to all textures (both MZX and SMZX).
*/
static inline void ctr_char_line_to_texture(
struct ctr_render_data *render_data, u8 c, u32 chr, int y)
{
u8 *p0, *p1, *p2, *p3;
u8 ch_low, ch_high;
u32 offset = ((chr%CTR_TEXTURE_CHARS_ROW) * (8 * 8 / 2));
u32 offset_smzx = (((chr & (~1)) % CTR_TEXTURE_CHARS_ROW) * (4 * 8 / 2));
offset += (chr/CTR_TEXTURE_CHARS_ROW) * (CTR_TEXTURE_WIDTH * CTR_CHAR_H / 2);
offset_smzx += (chr/CTR_TEXTURE_CHARS_ROW) * (CTR_TEXTURE_WIDTH/2 * CTR_CHAR_H / 2);
// Add the Y position to the offsets, taking into account the 8x8 swizzling
offset += ((y / 8) * (CTR_TEXTURE_WIDTH * 8 / 2));
offset += morton_lut4[(y & 7) * 4];
offset_smzx += ((y / 8) * (CTR_TEXTURE_WIDTH / 2 * 8 / 2));
offset_smzx += morton_lut4[(y & 7) * 4];
if(chr & 1)
offset_smzx += 8;
// Write line to MZX texture, taking into account the swizzling
p0 = ((u8*) render_data->charset[0].data) + offset;
p0[0] = bitmask_mzx[(c >> 6) ];
p0[2] = bitmask_mzx[(c >> 4) & 0x03];
p0[8] = bitmask_mzx[(c >> 2) & 0x03];
p0[10] = bitmask_mzx[(c ) & 0x03];
// Write line to SMZX texture, taking into account the swizzling
p0 = ((u8*) render_data->charset[1].data) + offset_smzx;
p1 = ((u8*) render_data->charset[2].data) + offset_smzx;
p2 = ((u8*) render_data->charset[3].data) + offset_smzx;
p3 = ((u8*) render_data->charset[4].data) + offset_smzx;
ch_high = (c >> 4);
ch_low = (c & 15);
p0[0] = bitmask_smzx[0][ch_high];
p0[2] = bitmask_smzx[0][ch_low];
p1[0] = bitmask_smzx[1][ch_high];
p1[2] = bitmask_smzx[1][ch_low];
p2[0] = bitmask_smzx[2][ch_high];
p2[2] = bitmask_smzx[2][ch_low];
p3[0] = bitmask_smzx[3][ch_high];
p3[2] = bitmask_smzx[3][ch_low];
}
static void ctr_remap_char_range(struct graphics_data *graphics, uint16_t first,
uint16_t count)
{
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
u16 end = first + count;
u8 *charset_pos;
u32 i, j;
if(end > FULL_CHARSET_SIZE)
end = FULL_CHARSET_SIZE;
charset_pos = graphics->charset;
charset_pos += first * CHAR_SIZE;
for(i = first; i < end; i++)
{
for(j = 0; j < 14; j++, charset_pos++)
ctr_char_line_to_texture(render_data, *charset_pos, i, j);
}
first = ctr_get_char_texture_row(first);
end = ctr_get_char_texture_row(end - 1);
for(i = first; i <= end; i++)
render_data->charset_dirty[i] = 1;
render_data->charset_dirty_set = 1;
}
static void ctr_remap_char(struct graphics_data *graphics, uint16_t chr)
{
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
u16 tex_row = ctr_get_char_texture_row(chr);
u8 *charset_pos;
u32 i;
charset_pos = graphics->charset;
charset_pos += chr * CHAR_SIZE;
for(i = 0; i < 14; i++, charset_pos++)
ctr_char_line_to_texture(render_data, *charset_pos, chr, i);
render_data->charset_dirty[tex_row] = 1;
render_data->charset_dirty_set = 1;
}
static void ctr_remap_charbyte(struct graphics_data *graphics, uint16_t chr,
uint8_t byte)
{
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
u16 tex_row = ctr_get_char_texture_row(chr);
u8 *charset_pos;
charset_pos = graphics->charset;
charset_pos += chr * CHAR_SIZE + byte;
ctr_char_line_to_texture(render_data, *charset_pos, chr, byte);
render_data->charset_dirty[tex_row] = 1;
render_data->charset_dirty_set = 1;
}
static inline void ctr_refresh_charsets(struct ctr_render_data *render_data,
int from, int to)
{
u8 *charset_dirty;
int coffs = 0;
int csize = 0;
int cincr = (CTR_TEXTURE_WIDTH * CTR_CHAR_H) / 2;
int last_dirty = 0;
int i;
if(!render_data->charset_dirty_set)
return;
render_data->charset_dirty_set = 0;
charset_dirty = render_data->charset_dirty;
for(i = 0; i < NUM_CHARSETS * 2; i++)
{
if(charset_dirty[i])
{
coffs = cincr * i;
break;
}
}
for(; i < NUM_CHARSETS * 2; i++)
{
if(charset_dirty[i])
{
charset_dirty[i] = 0;
last_dirty = i;
}
}
csize = (last_dirty + 1) * cincr - coffs;
if(csize <= 0)
return;
for(i = from; i < to; i++)
{
if(i != 0)
{
GSPGPU_FlushDataCache((u8*)(render_data->charset[i].data) + coffs/2, csize/2);
C3D_SyncTextureCopy((u32*)((u8*)(render_data->charset[i].data) + coffs/2), 0,
(u32*)((u8*)(render_data->charset_vram[i].data) + coffs/2), 0, csize/2, 8);
}
else
{
GSPGPU_FlushDataCache((u8*)(render_data->charset[0].data) + coffs, csize);
C3D_SyncTextureCopy((u32*)((u8*)(render_data->charset[0].data) + coffs), 0,
(u32*)((u8*)(render_data->charset_vram[0].data) + coffs), 0, csize, 8);
}
}
return;
}
static boolean ctr_should_render(struct ctr_render_data *render_data)
{
if(!render_data->rendering_frame)
{
// If we aren't currently in control of the GPU, do not draw video.
if(!gspHasGpuRight())
return false;
if(wide_requested)
{
ctr_set_wide(render_data, wide_new_state);
wide_requested = false;
}
if(render_data->checked_frame || !C3D_FrameBegin(C3D_FRAME_NONBLOCK))
{
render_data->checked_frame = true;
return false;
}
ctr_refresh_charsets(render_data, 0, 5);
render_data->rendering_frame = true;
render_data->layer_num = 0;
vertex_heap_pos = 0;
C3D_FrameDrawOn(render_data->playfield);
ctr_set_2d_projection(render_data, 1024, 512, false);
}
return true;
}
static inline u32 ctr_char_texture_uv(u32 ch)
{
u16 u = (ch % CTR_TEXTURE_CHARS_ROW) * CHAR_W;
u16 v = CTR_TEXTURE_HEIGHT - ((ch / CTR_TEXTURE_CHARS_ROW) * CTR_CHAR_H);
return (v << 16) | u;
}
template<int SMZX, int HAS_BACKGROUND_TEXTURE, int HAS_TRANSPARENT_COL>
static void ctr_render_layer_inner(struct graphics_data *graphics,
struct video_layer *vlayer, u32 bufsize)
{
struct ctr_layer *layer = (struct ctr_layer *)vlayer->platform_layer_data;
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
// Flags - dynamically set by the layer generation code.
boolean draw_background_texture = HAS_BACKGROUND_TEXTURE;
boolean has_content = false;
// Cached variables.
u32 transparent_col = vlayer->transparent_col;
int offset = vlayer->offset;
u32 protected_pal_position = graphics->protected_pal_position;
// Temporary variables for layer generation.
struct char_element *src = vlayer->data;
u32 ix, iy;
int pos0, pos1, pos2, pos3;
int pos_bg;
u32 ch, uv;
u32 col0, col1, col2, col3;
// SMZX = layer->mode == 0
// HAS_BACKGROUND_TEXTURE = draw_background_texture
pos0 = 0;
pos1 = layer->w * layer->h;
if(SMZX)
{
pos2 = pos1 * 2;
pos3 = pos1 * 3;
}
for(iy = 0; iy < layer->h; iy++)
{
for(ix = 0; ix < layer->w; ix++, src++)
{
if(HAS_BACKGROUND_TEXTURE)
{
pos_bg = morton_lut[(ix & 7) + ((iy & 7) << 3)]
+ ((ix & (~7)) << 3) + ((iy & (~7)) * layer->background.width);
}
ch = src->char_value;
if(ch == INVISIBLE_CHAR)
{
if(HAS_BACKGROUND_TEXTURE)
((u32*) layer->background.data)[pos_bg] = 0;
layer->foreground[pos0++].col = 0;
layer->foreground[pos1++].col = 0;
if(SMZX)
{
layer->foreground[pos2++].col = 0;
layer->foreground[pos3++].col = 0;
}
continue;
}
has_content = true;
if(ch >= 0x100)
ch = (ch & 0xFF) + PROTECTED_CHARSET_POSITION;
else
ch = (ch + offset) % PROTECTED_CHARSET_POSITION;
uv = ctr_char_texture_uv(ch);
if(!SMZX)
{
col0 = src->bg_color;
if(HAS_TRANSPARENT_COL && col0 == transparent_col)
{
col0 = 0;
}
else
{
if(col0 >= 16)
col0 = (col0 & 0xF) + protected_pal_position;
col0 = graphics->flat_intensity_palette[col0];
}
col1 = src->fg_color;
if(HAS_TRANSPARENT_COL && col1 == transparent_col)
{
col1 = 0;
draw_background_texture = false;
}
else
{
if(col1 >= 16)
col1 = (col1 & 0xF) + protected_pal_position;
col1 = graphics->flat_intensity_palette[col1];
}
if(HAS_BACKGROUND_TEXTURE)
((u32*) layer->background.data)[pos_bg] = col0;
layer->foreground[pos0].uv = uv;
layer->foreground[pos0++].col = col0;
layer->foreground[pos1].uv = uv;
layer->foreground[pos1++].col = col1;
}
else
{
u32 idx = ((src->bg_color << 6) | (src->fg_color << 2));
u32 idx0 = graphics->smzx_indices[idx ];
u32 idx1 = graphics->smzx_indices[idx + 1];
u32 idx2 = graphics->smzx_indices[idx + 2];
u32 idx3 = graphics->smzx_indices[idx + 3];
col0 = idx0 == transparent_col ? 0 : graphics->flat_intensity_palette[(u8) idx0];
col1 = idx1 == transparent_col ? 0 : graphics->flat_intensity_palette[(u8) idx1];
col2 = idx2 == transparent_col ? 0 : graphics->flat_intensity_palette[(u8) idx2];
col3 = idx3 == transparent_col ? 0 : graphics->flat_intensity_palette[(u8) idx3];
if((col1 & col2 & col3) == 0)
draw_background_texture = false;
if(HAS_BACKGROUND_TEXTURE)
((u32*) layer->background.data)[pos_bg] = col0;
layer->foreground[pos0].uv = uv;
layer->foreground[pos0++].col = col0;
layer->foreground[pos1].uv = uv;
layer->foreground[pos1++].col = col1;
layer->foreground[pos2].uv = uv;
layer->foreground[pos2++].col = col2;
layer->foreground[pos3].uv = uv;
layer->foreground[pos3++].col = col3;
}
}
}
if(!has_content)
return;
if(draw_background_texture)
{
C3D_TexFlush(&layer->background);
ctr_draw_2d_texture(render_data, &layer->background, 0,
layer->background.height - layer->h, layer->w, layer->h,
vlayer->x, vlayer->y, layer->w * 8, layer->h * 14,
(LAYER_DRAWORDER_MAX - layer->draw_order) + 0.66f, 0xffffffff, false);
}
ctr_prepare_playfield(render_data, layer->foreground, vlayer->x, vlayer->y, layer->z);
GSPGPU_FlushDataCache(layer->foreground, sizeof(struct v_char) * bufsize);
if(!SMZX)
{
C3D_TexBind(0, &render_data->charset_vram[0]);
if(!draw_background_texture)
{
C3D_SetTexEnv(0, &(render_data->env_playfield_inv));
C3D_DrawArrays(GPU_GEOMETRY_PRIM, 0, layer->w * layer->h);
}
C3D_SetTexEnv(0, &(render_data->env_playfield));
C3D_DrawArrays(GPU_GEOMETRY_PRIM, layer->w * layer->h, layer->w * layer->h);
}
else
{
C3D_SetTexEnv(0, &(render_data->env_playfield));
if(!draw_background_texture)
{
C3D_TexBind(0, &render_data->charset_vram[1]);
C3D_DrawArrays(GPU_GEOMETRY_PRIM, 0, layer->w * layer->h);
}
C3D_TexBind(0, &render_data->charset_vram[2]);
C3D_DrawArrays(GPU_GEOMETRY_PRIM, layer->w * layer->h, layer->w * layer->h);
C3D_TexBind(0, &render_data->charset_vram[3]);
C3D_DrawArrays(GPU_GEOMETRY_PRIM, layer->w * layer->h * 2, layer->w * layer->h);
C3D_TexBind(0, &render_data->charset_vram[4]);
C3D_DrawArrays(GPU_GEOMETRY_PRIM, layer->w * layer->h * 3, layer->w * layer->h);
}
}
template<int SMZX, int HAS_BACKGROUND_TEXTURE>
static inline void ctr_render_layer_inner(struct graphics_data *graphics,
struct video_layer *vlayer, u32 bufsize)
{
if(vlayer->transparent_col != -1)
ctr_render_layer_inner<SMZX, HAS_BACKGROUND_TEXTURE, 1>(graphics, vlayer, bufsize);
else
ctr_render_layer_inner<SMZX, HAS_BACKGROUND_TEXTURE, 0>(graphics, vlayer, bufsize);
}
template<int SMZX>
static inline void ctr_render_layer_inner(struct graphics_data *graphics,
struct video_layer *vlayer, u32 bufsize)
{
struct ctr_layer *layer = (struct ctr_layer *)vlayer->platform_layer_data;
if(layer->has_background_texture)
ctr_render_layer_inner<SMZX, 1>(graphics, vlayer, bufsize);
else
ctr_render_layer_inner<SMZX, 0>(graphics, vlayer, bufsize);
}
static inline void ctr_render_layer_inner(struct graphics_data *graphics,
struct video_layer *vlayer, u32 bufsize)
{
struct ctr_layer *layer = (struct ctr_layer *)vlayer->platform_layer_data;
if(layer->mode > 0)
ctr_render_layer_inner<1>(graphics, vlayer, bufsize);
else
ctr_render_layer_inner<0>(graphics, vlayer, bufsize);
}
static void ctr_render_layer(struct graphics_data *graphics,
struct video_layer *vlayer)
{
struct ctr_layer *layer = (struct ctr_layer *)vlayer->platform_layer_data;
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
u32 bufsize = vlayer->w * vlayer->h * (vlayer->mode > 0 ? 4 : 2);
u32 max_bufsize = vlayer->w * vlayer->h * 4;
u32 i;
if(!ctr_should_render(render_data))
return;
if(layer != NULL && (layer->w != vlayer->w || layer->h != vlayer->h))
{
linearFree(layer->foreground);
if(layer->has_background_texture)
C3D_TexDelete(&(layer->background));
free(layer);
layer = NULL;
}
if(layer != NULL && (layer->draw_order != vlayer->draw_order))
{
layer->draw_order = vlayer->draw_order;
layer->z = (LAYER_DRAWORDER_MAX - layer->draw_order) + 0.33f;
}
if(layer == NULL)
{
layer = (struct ctr_layer *) cmalloc(sizeof(struct ctr_layer));
layer->w = vlayer->w; layer->h = vlayer->h;
layer->draw_order = vlayer->draw_order;
layer->z = (LAYER_DRAWORDER_MAX - layer->draw_order) + 0.33f;
layer->foreground = (struct v_char *) clinearAlloc(sizeof(struct v_char) * max_bufsize, 0x80);
/**
* This renderer has two methods to draw char backgrounds. The quicker
* method is to draw them as single pixels on a texture stretched to the
* size of the layer. The slower method is to draw the layer an extra time
* for the background colors.
*
* The former method seems to consume a vast amount of buffer space to the
* point it causes crashes when too many sprites are active. Only use it for
* the default layers (these are the layers most likely to benefit anyway).
*/
if((vlayer->draw_order == LAYER_DRAWORDER_BOARD) ||
(vlayer->draw_order == LAYER_DRAWORDER_OVERLAY) ||
(vlayer->draw_order == LAYER_DRAWORDER_GAME_UI) ||
(vlayer->draw_order == LAYER_DRAWORDER_UI))
{
layer->has_background_texture = true;
layer->background.data = NULL;
C3D_TexInit(&(layer->background), to_texture_size(layer->w),
to_texture_size(layer->h), GPU_RGBA8);
C3D_TexSetFilter(&(layer->background), GPU_NEAREST, GPU_NEAREST);
}
else
layer->has_background_texture = false;
vlayer->platform_layer_data = layer;
// Initialize the foreground data.
for(i = 0; i < max_bufsize; i++)
{
layer->foreground[i].x = (i % layer->w);
layer->foreground[i].y = ((i / layer->w) % layer->h);
layer->foreground[i].uv = 0xFFFFFFFF;
}
}
layer->mode = vlayer->mode;
ctr_render_layer_inner(graphics, vlayer, bufsize);
render_data->layer_num++;
}
static void ctr_render_cursor(struct graphics_data *graphics, unsigned int x,
unsigned int y, uint16_t color, unsigned int lines, unsigned int offset)
{
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
uint32_t flatcolor = graphics->flat_intensity_palette[color];
if(ctr_should_render(render_data))
{
ctr_draw_2d_texture(render_data, NULL, 0, 0, 0, 0,
x * 8, y * 14 + offset, 8, lines, CTR_LAYER_CURSOR, flatcolor, false);
}
}
static void ctr_render_mouse(struct graphics_data *graphics,
unsigned int x, unsigned int y, unsigned int w, unsigned int h)
{
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
uint32_t col = 0xFFFFFFFF;
if(ctr_should_render(render_data))
{
C3D_AlphaBlend(GPU_BLEND_SUBTRACT, GPU_BLEND_ADD,
GPU_SRC_COLOR, GPU_DST_COLOR, GPU_SRC_ALPHA, GPU_DST_ALPHA);
ctr_draw_2d_texture(render_data, NULL, 0, 0, 0, 0, x, y, w, h, CTR_LAYER_MOUSE, col,
false);
C3D_AlphaBlend(GPU_BLEND_ADD, GPU_BLEND_ADD, GPU_SRC_ALPHA,
GPU_ONE_MINUS_SRC_ALPHA, GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA);
}
}
static inline void ctr_draw_playfield(struct ctr_render_data *render_data,
boolean top_screen)
{
int x, y;
int width, height;
float slider;
ctr_set_2d_projection_screen(render_data, top_screen);
if(top_screen)
{
if(ctr_keyboard_force_zoom_out())
{
slider = 1.0f;
}
else
{
slider = (osGet3DSliderState() * 1.3f) - 0.15f;
if(slider < 0.0f) slider = 0.0f;
if(slider > 1.0f) slider = 1.0f;
}
width = 400 + (240 * slider);
height = 240 + (144 * slider);
x = render_data->focus_x - (width / 2);
y = render_data->focus_y - (height / 2);
if(x < 0)
x = 0;
if((x + width) > 640)
x = 640 - width;
if(height > 350)
{
ctr_draw_2d_texture(render_data, &render_data->playfield_tex,
x, 512 - 350, width, 350, 0, (240 - (240 * 350 / height)) / 2,
400, 240 * 350 / height, 2.0f, 0xffffffff, true);
}
else
{
if(y < 0)
y = 0;
if((y + height) > 350)
y = 350 - height;
ctr_draw_2d_texture(render_data, &render_data->playfield_tex,
x, 512 - y - height, width, height, 0, 0, 400, 240,
2.0f, 0xffffffff, true);
}
}
else
{
if(get_bottom_screen_mode() == BOTTOM_SCREEN_MODE_KEYBOARD)
{
ctr_draw_2d_texture(render_data, &render_data->playfield_tex,
0, 512 - 350, 640, 350, 80, 12.75, 160, 87.5, 2.0f, 0xffffffff, true);
}
else
{
int width = 320, height = ctr_get_subscreen_height();
ctr_draw_2d_texture(render_data, &render_data->playfield_tex,
0, 512 - 350, 640, 350,
(int) ((320 - width) / 2), (int) ((240 - height) / 2),
width, height, 2.0f, 0xffffffff, true
);
}
}
}
static void ctr_sync_screen(struct graphics_data *graphics,
struct video_window *window)
{
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
if(!ctr_should_render(render_data))
{
render_data->checked_frame = false;
return;
}
#ifndef RDR_DEBUG
C3D_RenderTargetClear(render_data->target_top, C3D_CLEAR_ALL, 0x000000, 0);
C3D_FrameDrawOn(render_data->target_top);
ctr_draw_playfield(render_data, true);
#endif
C3D_RenderTargetClear(render_data->target_bottom, C3D_CLEAR_ALL, 0x000000, 0);
C3D_FrameDrawOn(render_data->target_bottom);
if(get_bottom_screen_mode() == BOTTOM_SCREEN_MODE_KEYBOARD)
{
ctr_set_2d_projection_screen(render_data, false);
ctr_keyboard_draw(render_data);
}
ctr_draw_playfield(render_data, false);
render_data->cursor_on = 0;
render_data->mouse_on = 0;
C3D_FrameEnd(0);
render_data->rendering_frame = false;
render_data->checked_frame = false;
}
static void ctr_focus_pixel(struct graphics_data *graphics,
unsigned int x, unsigned int y)
{
struct ctr_render_data *render_data = (struct ctr_render_data *) graphics->render_data;
switch(get_allow_focus_changes())
{
case FOCUS_FORBID:
return;
case FOCUS_ALLOW:
if(render_data->last_focus_x != x || render_data->last_focus_y != y)
{
render_data->last_focus_x = x;
render_data->last_focus_y = y;
render_data->focus_x = x;
render_data->focus_y = y;
}
break;
case FOCUS_PASS:
render_data->focus_x = x;
render_data->focus_y = y;
break;
}
}
void render_ctr_register(struct renderer *renderer)
{
memset(renderer, 0, sizeof(struct renderer));
renderer->init_video = ctr_init_video;
renderer->free_video = ctr_free_video;
renderer->create_window = ctr_create_window;
renderer->set_viewport = set_window_viewport_centered;
renderer->update_colors = ctr_update_colors;
renderer->remap_char_range = ctr_remap_char_range;
renderer->remap_char = ctr_remap_char;
renderer->remap_charbyte = ctr_remap_charbyte;
renderer->render_layer = ctr_render_layer;
renderer->render_cursor = ctr_render_cursor;
renderer->render_mouse = ctr_render_mouse;
renderer->sync_screen = ctr_sync_screen;
renderer->focus_pixel = ctr_focus_pixel;
}
================================================
FILE: arch/3ds/render.h
================================================
/* MegaZeux
*
* Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
* Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
* Copyright (C) 2007 Alan Williams <mralert@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __3DS_RENDER_H__
#define __3DS_RENDER_H__
#include <stdlib.h>
#include <3ds.h>
#include <citro3d.h>
#include "../../src/compat.h"
__M_BEGIN_DECLS
struct ctr_render_data;
C3D_Tex *ctr_load_png(const char *name);
void ctr_draw_2d_texture(struct ctr_render_data *render_data, C3D_Tex *texture,
int tx, int ty, int tw, int th,
float x, float y, float w, float h, float z, u32 color, boolean flipy);
void ctr_request_set_wide(bool wide);
int ctr_get_subscreen_height(void);
__M_END_DECLS
#endif /* __3DS_RENDER_H__ */
================================================
FILE: arch/3ds/shader_2d.g.pica
================================================
; MegaZeux
;
; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
; Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
; Copyright (C) 2007 Alan Williams <mralert@gmail.com>
;
; This program is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License as
; published by the Free Software Foundation; either version 2 of
; the License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
; General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
.gsh point c0
.fvec projection[4]
.out outpos position
.out outtc0 texcoord0
.out outclr color
.constf CONSTS(1.0, 0.0, 0.0, 0.0)
.entry gmain
.proc gmain
mov r0.xy, v0.xy
mov r0.z, v1.x
mov r0.w, CONSTS.x
mov r4.xy, v0.zw
mov r8.zw, r0.zw
mov r6.xy, v2.xy
mov r6.zw, CONSTS.zw
mov r5.xy, v2.zw
mov r10.zw, r6.zw
setemit 0
add r8.xy, r0.xy, r4.xy
mov r10.y, r6.y
add r10.x, r6.x, r5.x
call emit_vertex
emit
setemit 1
mov r8.x, r0.x
add r8.y, r0.y, r4.y
mov r10, r6
call emit_vertex
emit
setemit 2, prim
mov r8.xy, r0.xy
mov r10.x, r6.x
add r10.y, r6.y, r5.y
call emit_vertex
emit
setemit 1, prim inv
mov r8.y, r0.y
add r8.x, r0.x, r4.x
add r10.xy, r6.xy, r5.xy
call emit_vertex
emit
end
.end
.proc emit_vertex
dp4 outpos.x, projection[0], r8
dp4 outpos.y, projection[1], r8
dp4 outpos.z, projection[2], r8
dp4 outpos.w, projection[3], r8
mov outclr, v3
mov outtc0, r10
.end
================================================
FILE: arch/3ds/shader_2d.v.pica
================================================
; MegaZeux
;
; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
; Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
; Copyright (C) 2007 Alan Williams <mralert@gmail.com>
;
; This program is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License as
; published by the Free Software Foundation; either version 2 of
; the License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
; General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
.constf RGBS(0.00392156862745098, 0.00392156862745098, 0.00392156862745098, 0.00392156862745098)
.out - dummy o0
.out - dummy o1
.out - dummy o2
.out - dummy o3
.proc main
mov o0, v0
mov o1, v1
mov o2, v2
mov r1, RGBS
mul o3, v3.wzyx, r1.x
end
.end
================================================
FILE: arch/3ds/shader_playfield.g.pica
================================================
; MegaZeux
;
; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
; Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
; Copyright (C) 2007 Alan Williams <mralert@gmail.com>
;
; This program is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License as
; published by the Free Software Foundation; either version 2 of
; the License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
; General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
.gsh point c0
.fvec projection[4]
.fvec offset
.out outpos position
.out outtc0 texcoord0
.out outclr color
.alias inpos v0
.alias intc0 v1
.alias inclr v2
.constf SCALES(0.0009765625, 0.001953125, -1, 1)
.constf UVOFF(8, -14, 0, 0)
.constf POSSCALE(8.0, 14.0, 1.0, 1.0)
.entry gmain
.proc gmain
mov r4, POSSCALE
mov r2, intc0
mov r3.xy, inpos
mov r3.z, UVOFF.z
mad r0, r3, r4, offset
mov r11, SCALES
mov r0.w, POSSCALE.w
mul r5.xy, UVOFF.xy, r11.xy
mul r6, r2, r11
setemit 0
add r8.xy, r0.xy, r4.xy
add r10.xy, r6.xy, r5.xy
call emit_vertex
emit
setemit 1
mov r8.y, r0.y
add r8.x, r0.x, r4.x
mov r10.y, r6.y
add r10.x, r6.x, r5.x
call emit_vertex
emit
setemit 2, prim
mov r8, r0
mov r10, r6
call emit_vertex
emit
setemit 1, prim inv
mov r8.x, r0.x
add r8.y, r0.y, r4.y
mov r10.x, r6.x
add r10.y, r6.y, r5.y
call emit_vertex
emit
end
.end
.proc emit_vertex
dp4 outpos.x, projection[0], r8
dp4 outpos.y, projection[1], r8
dp4 outpos.z, projection[2], r8
dp4 outpos.w, projection[3], r8
mov outclr, inclr
mov outtc0, r10
.end
================================================
FILE: arch/3ds/shader_playfield.v.pica
================================================
; MegaZeux
;
; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>
; Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>
; Copyright (C) 2007 Alan Williams <mralert@gmail.com>
;
; This program is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License as
; published by the Free Software Foundation; either version 2 of
; the License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
; General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
.out outpos position
.out outtc0 texcoord0
.out outclr color
.alias inpos v0
.alias intc0 v1
.alias inclr v2
.constf RGBS(0.00392156862745098, 0.00392156862745098, 0.00392156862745098, 0.00392156862745098)
.proc main
mov outpos, inpos
mov outtc0, intc0
mov r1, RGBS
mul outclr, inclr.wzyx, r1.x
end
.end
================================================
FILE: arch/3ds/thread.h
================================================
/* MegaZeux
*
* Copyright (C) 2016, 2018 Adrian Siekierka <asiekierka@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __THREAD_3DS_H
#define __THREAD_3DS_H
#include "../../src/compat.h"
#define STACK_SIZE_CTR 8096
__M_BEGIN_DECLS
#include <3ds.h>
#define THREAD_RES void
#define THREAD_RETURN do { return; } while(0)
typedef CondVar platform_cond;
typedef LightLock platform_mutex;
typedef LightSemaphore platform_sem;
typedef Thread platform_thread;
typedef Thread platform_thread_id;
typedef ThreadFunc platform_thread_fn;
static inline boolean platform_mutex_init(platform_mutex *mutex)
{
LightLock_Init(mutex);
return true;
}
static inline boolean platform_mutex_destroy(platform_mutex *mutex)
{
return true;
}
static inline boolean platform_mutex_lock(platform_mutex *mutex)
{
LightLock_Lock(mutex);
return true;
}
static inline boolean platform_mutex_unlock(platform_mutex *mutex)
{
LightLock_Unlock(mutex);
return true;
}
static inline boolean platform_cond_init(platform_cond *cond)
{
CondVar_Init(cond);
return true;
}
static inline boolean platform_cond_destroy(platform_cond *cond)
{
return true;
}
static inline boolean platform_cond_wait(platform_cond *cond,
platform_mutex *mutex)
{
CondVar_Wait(cond, mutex);
return true;
}
static inline boolean platform_cond_timedwait(platform_cond *cond,
platform_mutex *mutex, unsigned int timeout_ms)
{
s64 timeout_ns = (s64)timeout_ms * 1000000;
if(CondVar_WaitTimeout(cond, mutex, timeout_ns))
return false;
return true;
}
static inline boolean platform_cond_signal(platform_cond *cond)
{
CondVar_Signal(cond);
return true;
}
static inline boolean platform_cond_broadcast(platform_cond *cond)
{
CondVar_Broadcast(cond);
return true;
}
static inline boolean platform_sem_init(platform_sem *sem, unsigned init_value)
{
if(init_value > INT16_MAX)
return false;
LightSemaphore_Init(sem, init_value, INT16_MAX);
return true;
}
static inline boolean platform_sem_destroy(platform_sem *sem)
{
return true;
}
static inline boolean platform_sem_wait(platform_sem *sem)
{
LightSemaphore_Acquire(sem, 1);
return true;
}
static inline boolean platform_sem_post(platform_sem *sem)
{
LightSemaphore_Release(sem, 1);
return true;
}
static inline boolean platform_thread_create(platform_thread *thread,
platform_thread_fn start_function, void *data)
{
Thread t;
s32 priority;
svcGetThreadPriority(&priority, CUR_THREAD_HANDLE);
t = threadCreate(start_function, data, STACK_SIZE_CTR, priority-1, -1,
true);
if(t)
{
*thread = t;
return true;
}
return false;
}
static inline boolean platform_thread_join(platform_thread *thread)
{
// Return value not documented...
threadJoin(*thread, U64_MAX);
return true;
}
static inline platform_thread_id platform_get_thread_id(void)
{
return threadGetCurrent();
}
static inline boolean platform_is_same_thread(platform_thread_id a,
platform_thread_id b)
{
return a == b;
}
__M_END_DECLS
#endif // __THREAD_3DS_H
================================================
FILE: arch/LICENSE.3rd
================================================
----------------------------------------------------------------
Third party software licenses for MegaZeux
----------------------------------------------------------------
The licenses here applicable to a given build of MegaZeux will
vary. Typically one C standard library (glibc/Newlib/musl/etc.),
one module playback library (libxmp/libmodplug/MikMod/Maxmod),
SDL, and several other libraries will be linked. The ports that
use each library by default will be indicated below. Not all
libcs are accounted for here, but the ones most often linked by
MegaZeux are.
Some particularly verbose licenses are only provided as URL.
For MegaZeux's license, see LICENSE.
----------------------------------------------------------------
glibc
----------------------------------------------------------------
glibc is available under the GNU Lesser General Public License 2.1.
See LICENSE.LGPL2 or /usr/share/licenses/glibc for more information.
Used by ports: Most Linux distributions.
Home page: https://www.gnu.org/software/libc/
License URL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
----------------------------------------------------------------
MSVCRT.DLL, WS2_32.DLL, WSOCK.DLL
----------------------------------------------------------------
These Microsoft Windows libraries are proprietary software.
Linking them is permitted under the GPL system library exception.
Used by ports: MinGW and MSVC.
Home page: https://www.microsoft.com/
----------------------------------------------------------------
Apple libc
----------------------------------------------------------------
Apple libc is available under the Apple Public Source License 2.0.
Used by ports: Darwin and Xcode.
Home page: https://opensource.apple.com/source/Libc/
License URL: https://opensource.apple.com/license/apsl/
----------------------------------------------------------------
Newlib
----------------------------------------------------------------
Newlib is available under a collection of BSD-like licenses.
See LICENSE.Newlib or for more information.
Used by ports: NDS, 3DS, Wii, Wii U, Switch, PSP, PS Vita,
Dreamcast, AmigaOS 4.
Home page: https://sourceware.org/newlib/
License URL: https://sourceware.org/newlib/COPYING.NEWLIB
----------------------------------------------------------------
musl
----------------------------------------------------------------
musl is available under the MIT license.
Used by ports: Emscripten (also the default libc on some distributions).
Home page: https://musl.libc.org/
License URL: https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT
Copyright © 2005-2020 Rich Felker, et al.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------------------------------
Bionic libc
----------------------------------------------------------------
Bionic is available under a collection of BSD-like licenses.
Used by ports: Android.
Home page: https://android.googlesource.com/platform/bionic/
License URL:
https://android.googlesource.com/platform/bionic/+/master/libc/NOTICE
----------------------------------------------------------------
DJGPP libc, libm, and crt0
----------------------------------------------------------------
DJGPP libc and crt0 are available under the GNU Lesser General
Public License 2.1. DJGPP libm is *probably* available under the
GNU General Public License 2.0. DJGPP also contains contributed
code under various permissive licenses. See LICENSE.DJGPP,
LICENSE.LGPL2, and LICENSE for more information.
Used by ports: DJGPP.
Home page: http://www.delorie.com/djgpp/
Source URL: http://www.delorie.com/pub/djgpp/ (djlsr205.zip)
----------------------------------------------------------------
SDL
----------------------------------------------------------------
SDL is available under the zlib license.
gamecontrollerdb.txt is available under an identical license.
Used by ports: Most.
Home page: https://www.libsdl.org/
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
----------------------------------------------------------------
SDL 1.2
----------------------------------------------------------------
SDL 1.2 is available under the GNU Lesser General Public License 2.1.
See LICENSE.LGPL2 or /usr/share/licenses/SDL for more information.
Used by ports: Mac OS X PowerPC, PSP, GP2X, Pandora, AmigaOS 4.
Home page: https://www.libsdl.org/
License URL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
----------------------------------------------------------------
khash
----------------------------------------------------------------
MZX uses a heavily modified khash which is available under the MIT license.
Used by ports: All.
Home page: https://attractivechaos.github.io/klib/
The MIT License
Copyright (c) 2008, 2009, 2011 by Attractive Chaos <attractor@live.co.uk>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
----------------------------------------------------------------
zlib
----------------------------------------------------------------
zlib is available under the zlib license.
Used by ports: All.
Home page: https://zlib.net/
zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.11, January 15th, 2017
Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
----------------------------------------------------------------
libpng
----------------------------------------------------------------
libpng is available under a zlib-like license.
Used by ports: Most.
Home page: https://www.libpng.org/
PNG Reference Library License version 2
---------------------------------------
* Copyright (c) 1995-2019 The PNG Reference Library Authors.
* Copyright (c) 2018-2019 Cosmin Truta.
* Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
* Copyright (c) 1996-1997 Andreas Dilger.
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
The software is supplied "as is", without warranty of any kind,
express or implied, including, without limitation, the warranties
of merchantability, fitness for a particular purpose, title, and
non-infringement. In no event shall the Copyright owners, or
anyone distributing the software, be liable for any damages or
other liability, whether in contract, tort or otherwise, arising
from, out of, or in connection with the software, or the use or
other dealings in the software, even if advised of the possibility
of such damage.
Permission is hereby granted to use, copy, modify, and distribute
this software, or portions hereof, for any purpose, without fee,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you
must not claim that you wrote the original software. If you
use this software in a product, an acknowledgment in the product
documentation would be appreciated, but is not required.
2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
3. This Copyright notice may not be removed or altered from any
source or altered source distribution.
----------------------------------------------------------------
libogg, libvorbis, and Tremor
----------------------------------------------------------------
libogg, libvorbis, and Tremor are all available under the
BSD-3-clause license.
Used by ports: All except DJGPP, NDS.
Home page: https://xiph.org/ogg/
Home page: https://xiph.org/vorbis/
Copyright (c) 2002-2020 Xiph.org Foundation
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of the Xiph.org Foundation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------
stb_vorbis
----------------------------------------------------------------
stb_vorbis is available under a dual MIT/Unlicense license.
MegaZeux uses a fork of stb_vorbis maintained by sezero as some
of the required patches have not been merged upstream yet.
Used by ports: DJGPP
Home page: https://github.com/nothings/stb
sezero fork: https://github.com/sezero/stb
------------------------------------------------------------------------------
This software is available under 2 licenses -- choose whichever you prefer.
------------------------------------------------------------------------------
ALTERNATIVE A - MIT License
Copyright (c) 2017 Sean Barrett
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
------------------------------------------------------------------------------
ALTERNATIVE B - Public Domain (www.unlicense.org)
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
software, either in source code form or as a compiled binary, for any purpose,
commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this
software dedicate any and all copyright interest in the software to the public
domain. We make this dedication for the benefit of the public at large and to
the detriment of our heirs and successors. We intend this dedication to be an
overt act of relinquishment in perpetuity of all present and future rights to
this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
----------------------------------------------------------------
libxmp
----------------------------------------------------------------
The subset of libxmp used by MegaZeux is available under the MIT license.
Used by ports: All except NDS.
Home page: http://xmp.sourceforge.net/
Extended Module Player
Copyright (C) 1996-2021 Claudio Matsuoka and Hipolito Carraro Jr
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
----------------------------------------------------------------
libmodplug
----------------------------------------------------------------
libmodplug is available in the public domain.
Used by ports: None (non-default compile-time option).
Home page: https://github.com/Konstanty/libmodplug
----------------------------------------------------------------
MikMod
----------------------------------------------------------------
libmikmod is available under the GNU Lesser General Public License 2.1.
See LICENSE.LGPL2 for more information.
Used by ports: None (non-default compile-time option).
Home page: http://mikmod.sourceforge.net/
License URL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
----------------------------------------------------------------
OpenMPT
----------------------------------------------------------------
libopenmpt is available under the BSD-3-clause license.
Used by ports: None (non-default compile-time option).
Home page: https://lib.openmpt.org/libopenmpt/
Copyright (c) 2004-2022, OpenMPT Project Developers and Contributors
Copyright (c) 1997-2003, Olivier Lapicque
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the OpenMPT project nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------
Reality Adlib Tracker v2
----------------------------------------------------------------
The Reality Adlib Tracker v2 playercode is available in the public domain.
Used by ports: All except NDS.
Home page: https://www.3eality.com/productions/reality-adlib-tracker
----------------------------------------------------------------
Maxmod
----------------------------------------------------------------
Maxmod is available under the ISC license.
Used by ports: NDS.
Home page: https://maxmod.org
/****************************************************************************
* __ *
* ____ ___ ____ __ ______ ___ ____ ____/ / *
* / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / *
* / / / / / / /_/ /> </ / / / / / /_/ / /_/ / *
* /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ *
* *
* Nintendo DS & Gameboy Advance Sound System *
* *
* Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) *
* *
* Permission to use, copy, modify, and/or distribute this software for any *
* purpose with or without fee is hereby granted, provided that the above *
* copyright notice and this permission notice appear in all copies. *
* *
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES *
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR *
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES *
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN *
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF *
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
****************************************************************************/
----------------------------------------------------------------
libnds and FatFS
----------------------------------------------------------------
Both variants of the libnds SDK supported by MegaZeux (devkitPro
libnds 1.x, BlocksDS libnds 1.x-blocks) are available under various
zlib licenses and a zlib-like license for FatFS.
Used by ports: NDS.
Home page: https://github.com/devkitPro/libnds
Home page: https://github.com/blocksds/libnds
Copyright (C) 2005 - 2008
Michael Noland (joat)
Jason Rogers (dovoto)
Dave Murpy (WinterMute)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you
must not claim that you wrote the original software. If you use
this software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
/*----------------------------------------------------------------------------/
/ FatFs - Generic FAT Filesystem Module Rx.xx /
/-----------------------------------------------------------------------------/
/
/ Copyright (C) 20xx, ChaN, all right reserved.
/
/ FatFs module is an open source software. Redistribution and use of FatFs in
/ source and binary forms, with or without modification, are permitted provided
/ that the following condition is met:
/
/ 1. Redistributions of source code must retain the above copyright notice,
/ this condition and the following disclaimer.
/
/ This software is provided by the copyright holder and contributors "AS IS"
/ and any warranties related to this software are DISCLAIMED.
/ The copyright owner or contributors be NOT LIABLE for any damages caused
/ by use of this software.
/----------------------------------------------------------------------------*/
----------------------------------------------------------------
libctru
----------------------------------------------------------------
The libctru 3DS SDK is available under the zlib license.
Used by ports: 3DS.
Home page: https://github.com/devkitPro/libctru
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you
must not claim that you wrote the original software. If you use
this software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
----------------------------------------------------------------
libogc
----------------------------------------------------------------
libogc consists primarily of code from RTEMS (GPLv2-or-later with
linking exception plus various permissive licenses, partially attributed),
possibly with a small portion of Linux code (GPLv2-only, unattributed).
The remainder is available under various zlib licenses.
https://www.rtems.org/news/2025-05-06-rtems-devkit-libogc-response/
Used by ports: Wii.
Home page: https://github.com/devkitPro/libogc
RTEMS license: https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/LICENSE.md
Copyright (C) 2004 - 2009
Michael Wiedenbauer (shagkur)
Dave Murphy (WinterMute)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you
must not claim that you wrote the original software. If you use
this software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
----------------------------------------------------------------
libnx
----------------------------------------------------------------
The libnx Switch SDK is available under the ISC license.
Used by ports: Switch.
Home page: https://github.com/switchbrew/libnx
Copyright 2017-2018 libnx Authors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
----------------------------------------------------------------
crt0
----------------------------------------------------------------
Some MZX ports use a crt0 licensed under the Mozilla Public License 2.0.
See LICENSE.MPL2 for more information.
Used by ports: NDS, 3DS.
Home page: https://github.com/devkitPro/devkitarm-crtls
License URL: https://mozilla.org/MPL/2.0/
----------------------------------------------------------------
dlmalloc
----------------------------------------------------------------
dlmalloc is available under the Creative Commons CC0 1.0 License.
See LICENSE.CC0 for more information.
Used by ports: NDS.
Home page: http://gee.cs.oswego.edu/dl/html/malloc.html (?)
License URL: https://creativecommons.org/publicdomain/zero/1.0/
----------------------------------------------------------------
KallistiOS
----------------------------------------------------------------
The KallistiOS SDK (libkallisti et al.) is available under the
BSD-3-clause license.
Used by ports: Dreamcast
Home page: https://sourceforge.net/projects/cadcdev/
All of the documentation and software included in the KallistiOS Releases
is copyrighted (C) 1997-2020 by Dan Potter, Lawrence Sebald, and others (as
noted in each file).
Copyright (C) 1997-2020 KallistiOS Contributors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of Cryptic Allusion nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
----------------------------------------------------------------
Xlib
----------------------------------------------------------------
Xlib is available under a collection of MIT-like licenses.
Used by ports: Linux/BSD/Unix (optional).
Home page: https://www.x.org/
License URL:
https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/COPYING
----------------------------------------------------------------
Mesa
----------------------------------------------------------------
Mesa is available under the MIT license.
Used by ports: Linux (dynamic linked, optional), Switch (static linked).
Home page: https://www.mesa3d.org/
Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
----------------------------------------------------------------
Nouveau
----------------------------------------------------------------
libdrm_nouveau is available under the MIT license.
Used by ports: Linux (dynamic linked, optional), Switch (static linked).
Home page: https://nouveau.freedesktop.org/
* Copyright 2012 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
================================================
FILE: arch/LICENSE.CC0
================================================
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
================================================
FILE: arch/LICENSE.DJGPP
================================================
Licenses for DJGPP, including most licenses in the relevant source code.
This *should* be all of them aside from slightly different copyright
dates, but there are quite a few and some have very minor differences.
Note "COPYING" is available as "LICENSE" and "COPYING.LIB" is available
as "LICENSE.LGPL2" as-distributed by MegaZeux.
DJGPP and its source code are available here: http://www.delorie.com/djgpp/
1) copying.dj (crt0, libc, libm)
This is the file "copying.dj". It does NOT apply to any sources or
binaries copyrighted by UCB Berkeley, the Free Software Foundation, or
any other agency besides DJ Delorie and others who have agreed to
allow their sources to be distributed under these terms.
Copyright Information for sources and executables that are marked
Copyright (C) DJ Delorie
334 North Rd
Deerfield NH 03037-1110
This document is Copyright (C) DJ Delorie and may be distributed
verbatim, but changing it is not allowed.
Source code copyright DJ Delorie is distributed under the terms of the
GNU General Public Licence, with the following exceptions:
* Sources used to build crt0.o, gcrt0.o, libc.a, libdbg.a, and
libemu.a are distributed under the terms of the GNU Library General
Public License, rather than the GNU GPL.
* Any existing copyright or authorship information in any given source
file must remain intact. If you modify a source file, a notice to that
effect must be added to the authorship information in the source file.
* Runtime binaries, as provided by DJ in DJGPP, may be distributed
without sources ONLY if the recipient is given sufficient information
to obtain a copy of djgpp themselves. This primarily applies to
go32-v2.exe, emu387.dxe, and stubedit.exe.
* Runtime objects and libraries, as provided by DJ in DJGPP, when
linked into an application, may be distributed without sources ONLY
if the recipient is given sufficient information to obtain a copy of
djgpp themselves. This primarily applies to crt0.o and libc.a.
-----
Changes to source code copyright BSD, FSF, or others, by DJ Delorie
fall under the terms of the original copyright. Such files usually
have multiple copyright notices in them.
A copy of the files "COPYING" and "COPYING.LIB" are included with this
document. If you did not receive a copy of these files, you may
obtain one from whence this document was obtained, or by writing:
Free Software Foundation
51 Franklin Street, Fifth Floor
Boston, MA 02110-1301
USA
2)
gitextract_vpyz_01n/ ├── .gitattributes ├── .github/ │ └── workflows/ │ └── main.yml ├── .gitignore ├── .valgrindrc ├── BUILDING.md ├── LICENSE ├── Makefile ├── README.md ├── arch/ │ ├── 3ds/ │ │ ├── CONFIG.3DS │ │ ├── Makefile.in │ │ ├── README.md │ │ ├── audio.c │ │ ├── event.c │ │ ├── event.h │ │ ├── keyboard.c │ │ ├── keyboard.h │ │ ├── pad.config │ │ ├── pad.config.sdl12 │ │ ├── pad.config.sdl2 │ │ ├── platform.c │ │ ├── platform.h │ │ ├── render.cpp │ │ ├── render.h │ │ ├── shader_2d.g.pica │ │ ├── shader_2d.v.pica │ │ ├── shader_playfield.g.pica │ │ ├── shader_playfield.v.pica │ │ └── thread.h │ ├── LICENSE.3rd │ ├── LICENSE.CC0 │ ├── LICENSE.DJGPP │ ├── LICENSE.LGPL2 │ ├── LICENSE.MPL2 │ ├── LICENSE.Newlib │ ├── README │ ├── amiga/ │ │ ├── CONFIG.AMIGA │ │ ├── MZXRun │ │ ├── Makefile.in │ │ ├── MegaZeux │ │ ├── MegaZeux.info │ │ └── README │ ├── android/ │ │ ├── CONFIG.ANDROID │ │ ├── Makefile.deps │ │ ├── Makefile.in │ │ ├── README.md │ │ ├── SDL2-page-sizes.patch │ │ ├── config_types.h │ │ ├── libogg-Android.mk │ │ ├── libvorbis-Android.mk │ │ └── project/ │ │ ├── app/ │ │ │ ├── build.gradle │ │ │ ├── jni/ │ │ │ │ ├── Android.mk │ │ │ │ ├── Application.mk │ │ │ │ └── main/ │ │ │ │ └── Android.mk │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ ├── net/ │ │ │ │ │ └── digitalmzx/ │ │ │ │ │ └── megazeux/ │ │ │ │ │ ├── GameActivity.java │ │ │ │ │ └── MainActivity.java │ │ │ │ └── org/ │ │ │ │ └── libsdl/ │ │ │ │ └── app/ │ │ │ │ ├── HIDDevice.java │ │ │ │ ├── HIDDeviceBLESteamController.java │ │ │ │ ├── HIDDeviceManager.java │ │ │ │ ├── HIDDeviceUSB.java │ │ │ │ ├── SDL.java │ │ │ │ ├── SDLActivity.java │ │ │ │ ├── SDLAudioManager.java │ │ │ │ ├── SDLControllerManager.java │ │ │ │ └── SDLSurface.java │ │ │ └── res/ │ │ │ ├── raw/ │ │ │ │ └── readme │ │ │ └── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ └── settings.gradle │ ├── compat.inc │ ├── darwin/ │ │ ├── MZXRun.plist │ │ ├── Makefile.arch │ │ ├── Makefile.in │ │ ├── MegaZeux.plist │ │ ├── README.md │ │ ├── bin/ │ │ │ └── otool │ │ ├── bundle.sh │ │ ├── dmg.sh │ │ └── lipo.sh │ ├── djgpp/ │ │ ├── CONFIG.DJGPP │ │ ├── Makefile.in │ │ ├── audio.c │ │ ├── driver_sb.h │ │ ├── event.c │ │ ├── interrupt.S │ │ ├── platform.c │ │ ├── platform_djgpp.h │ │ ├── render_ega.c │ │ ├── render_svga.c │ │ └── thread.h │ ├── dreamcast/ │ │ ├── CONFIG.DC │ │ ├── Makefile.in │ │ ├── audio.c │ │ ├── event.c │ │ ├── pad.config │ │ ├── platform.c │ │ ├── render.c │ │ ├── render_fb.c │ │ └── thread.h │ ├── emscripten/ │ │ ├── CONFIG.HTML5 │ │ ├── Makefile.in │ │ ├── README │ │ ├── emzip.c │ │ ├── web/ │ │ │ ├── package.json │ │ │ ├── res/ │ │ │ │ ├── docs/ │ │ │ │ │ └── emscripten_readme.txt │ │ │ │ ├── index.html │ │ │ │ └── mzxrun_loader.js │ │ │ ├── rollup.config.js │ │ │ └── src/ │ │ │ ├── index.js │ │ │ ├── storage.js │ │ │ ├── storage_emscripten.js │ │ │ ├── util.js │ │ │ └── zip.js │ │ └── whitelist.json │ ├── gp2x/ │ │ ├── Makefile.in │ │ ├── README │ │ └── pad.config │ ├── install.inc │ ├── lha.inc │ ├── manifest.sh │ ├── mingw/ │ │ ├── Makefile.in │ │ ├── checkres-readme.txt │ │ ├── checkres.bat │ │ ├── directx.bat │ │ ├── installer.nsi │ │ └── pefix.c │ ├── msvc/ │ │ ├── Core.vcxproj │ │ ├── Core.vcxproj.filters │ │ ├── Editor.vcxproj │ │ ├── Editor.vcxproj.filters │ │ ├── MZXRun.vcxproj │ │ ├── MZXRun.vcxproj.filters │ │ ├── MegaZeux.sln │ │ ├── MegaZeux.vcxproj │ │ ├── MegaZeux.vcxproj.filters │ │ ├── README.txt │ │ ├── config.h │ │ ├── dirent.h │ │ ├── msvc.h │ │ ├── update_version.cmd │ │ ├── win32time.c │ │ └── win32time.h │ ├── nds/ │ │ ├── CONFIG.NDS │ │ ├── Makefile │ │ ├── Makefile.in │ │ ├── README │ │ ├── arm7/ │ │ │ ├── Makefile │ │ │ └── source/ │ │ │ └── arm7main.c │ │ ├── audio.c │ │ ├── dlmalloc.c │ │ ├── dlmalloc.h │ │ ├── event.c │ │ ├── event.h │ │ ├── evq.c │ │ ├── evq.h │ │ ├── extmem.c │ │ ├── extmem.h │ │ ├── gen_protected_palette.py │ │ ├── internals_notes.txt │ │ ├── malloc_opts.h │ │ ├── pad.config │ │ ├── platform.c │ │ ├── platform.h │ │ ├── ram.c │ │ ├── ram.h │ │ ├── render.c │ │ └── render.h │ ├── nds-blocksds/ │ │ ├── CONFIG.NDS │ │ └── Makefile.in │ ├── none/ │ │ └── Makefile.in │ ├── pandora/ │ │ ├── Makefile.in │ │ └── README │ ├── psp/ │ │ ├── CONFIG.PSP │ │ ├── Makefile.in │ │ ├── README │ │ ├── pad.config │ │ └── platform.c │ ├── psvita/ │ │ ├── CONFIG.PSVITA │ │ ├── Makefile.in │ │ ├── README.md │ │ ├── pad.config.sdl12 │ │ └── sce_sys/ │ │ └── livearea/ │ │ └── contents/ │ │ └── template.xml │ ├── switch/ │ │ ├── CONFIG.SWITCH │ │ ├── Makefile.in │ │ └── pad.config │ ├── unix/ │ │ ├── Makefile.in │ │ ├── README │ │ ├── megazeux.desktop │ │ ├── megazeux.metainfo.xml │ │ └── mzxrun.desktop │ ├── wii/ │ │ ├── CONFIG.WII │ │ ├── Makefile.in │ │ ├── README │ │ ├── audio.c │ │ ├── event.c │ │ ├── meta.xml │ │ ├── network.cpp │ │ ├── pad.config │ │ ├── pad.config.sdl │ │ ├── pad.config.sdl2 │ │ ├── platform.c │ │ ├── render_gx.c │ │ ├── render_xfb.c │ │ └── thread.h │ ├── wiiu/ │ │ ├── CONFIG.WIIU │ │ ├── Makefile.in │ │ ├── meta.xml │ │ └── pad.config │ ├── xcode/ │ │ ├── MZXRun/ │ │ │ ├── Assets.xcassets/ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Info.plist │ │ ├── MegaZeux/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ └── MainMenu.xib │ │ │ └── Info.plist │ │ ├── MegaZeux.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ └── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── README.md │ │ ├── config.h │ │ └── update_version.sh │ └── zip.inc ├── assets/ │ ├── ascii.chr │ ├── blank.chr │ ├── default.chr │ ├── edit.chr │ ├── gamecontrollerdb.txt │ ├── glsl/ │ │ ├── README.md │ │ ├── cursor.frag │ │ ├── cursor.vert │ │ ├── mouse.frag │ │ ├── mouse.vert │ │ ├── scaler.vert │ │ ├── scalers/ │ │ │ ├── crt-wave.frag │ │ │ ├── crt.frag │ │ │ ├── emboss.frag │ │ │ ├── epx.frag │ │ │ ├── greyscale.frag │ │ │ ├── hqscale.frag │ │ │ ├── hqscale.vert │ │ │ ├── nearest.frag │ │ │ ├── sai.frag │ │ │ ├── semisoft.frag │ │ │ ├── sepia.frag │ │ │ └── simple.frag │ │ ├── tilemap.frag │ │ ├── tilemap.smzx.frag │ │ └── tilemap.vert │ ├── help.fil │ ├── smzx.chr │ ├── smzx.pal │ └── smzx2.chr ├── config.sh ├── config.txt ├── contrib/ │ ├── archicons/ │ │ └── README │ ├── gdm2s3m/ │ │ ├── COPYING │ │ ├── CREDITS │ │ ├── README │ │ ├── build.bat │ │ ├── doc/ │ │ │ ├── gdm.txt │ │ │ ├── s3m-form.txt │ │ │ └── s3m_effects.txt │ │ └── src/ │ │ ├── Makefile.in │ │ ├── error.c │ │ ├── error.h │ │ ├── gdm.c │ │ ├── gdm.h │ │ ├── gdm2s3m.c │ │ ├── gdm2s3m.h │ │ ├── s3m.c │ │ ├── s3m.h │ │ ├── types.h │ │ ├── utility.c │ │ └── utility.h │ ├── hlp2html/ │ │ ├── README.md │ │ ├── fonts.css │ │ ├── style.css │ │ └── style_color.css │ ├── icons/ │ │ ├── Makefile.in │ │ ├── icon.rc │ │ └── old/ │ │ ├── logicow/ │ │ │ ├── ghostblue.rc │ │ │ └── ghostred.rc │ │ └── quantump/ │ │ ├── quantump.icns │ │ └── quantump.rc │ ├── infback9/ │ │ ├── LICENSE │ │ ├── README │ │ ├── infback9.c │ │ ├── infback9.h │ │ ├── inffix9.h │ │ ├── inflate9.h │ │ ├── inftree9.c │ │ ├── inftree9.h │ │ └── zutil.h │ ├── khash/ │ │ └── khash.h │ ├── libmodplug/ │ │ ├── AUTHORS │ │ ├── COPYING │ │ ├── ChangeLog │ │ ├── NEWS │ │ ├── README │ │ ├── TODO │ │ └── src/ │ │ ├── Makefile.in │ │ ├── fastmix.cpp │ │ ├── libmodplug/ │ │ │ ├── it_defs.h │ │ │ ├── sndfile.h │ │ │ └── stdafx.h │ │ ├── load_669.cpp │ │ ├── load_amf.cpp │ │ ├── load_dsm.cpp │ │ ├── load_far.cpp │ │ ├── load_gdm.cpp │ │ ├── load_it.cpp │ │ ├── load_med.cpp │ │ ├── load_mod.cpp │ │ ├── load_mtm.cpp │ │ ├── load_okt.cpp │ │ ├── load_s3m.cpp │ │ ├── load_stm.cpp │ │ ├── load_ult.cpp │ │ ├── load_wav.cpp │ │ ├── load_xm.cpp │ │ ├── mmcmp.cpp │ │ ├── modplug.cpp │ │ ├── modplug.h │ │ ├── snd_dsp.cpp │ │ ├── snd_flt.cpp │ │ ├── snd_fx.cpp │ │ ├── sndfile.cpp │ │ ├── sndmix.cpp │ │ └── tables.h │ ├── libxmp/ │ │ ├── Makefile.megazeux │ │ ├── Makefile.megazeux-gen │ │ ├── README │ │ ├── README.megazeux.md │ │ ├── docs/ │ │ │ ├── COPYING │ │ │ ├── CREDITS │ │ │ └── Changelog │ │ ├── include/ │ │ │ └── xmp.h │ │ ├── mzx-gen.sh │ │ └── src/ │ │ ├── callbackio.h │ │ ├── common.h │ │ ├── control.c │ │ ├── dataio.c │ │ ├── effects.c │ │ ├── effects.h │ │ ├── extras.c │ │ ├── extras.h │ │ ├── far_extras.c │ │ ├── far_extras.h │ │ ├── filetype.c │ │ ├── filter.c │ │ ├── flow.c │ │ ├── format.c │ │ ├── format.h │ │ ├── hio.c │ │ ├── hio.h │ │ ├── hmn_extras.c │ │ ├── hmn_extras.h │ │ ├── lfo.c │ │ ├── lfo.h │ │ ├── list.h │ │ ├── load.c │ │ ├── load_helpers.c │ │ ├── loaders/ │ │ │ ├── 669_load.c │ │ │ ├── amf_load.c │ │ │ ├── asylum_load.c │ │ │ ├── common.c │ │ │ ├── far_load.c │ │ │ ├── flt_load.c │ │ │ ├── gdm_load.c │ │ │ ├── hmn_load.c │ │ │ ├── ice_load.c │ │ │ ├── iff.c │ │ │ ├── iff.h │ │ │ ├── it.h │ │ │ ├── it_load.c │ │ │ ├── itsex.c │ │ │ ├── loader.h │ │ │ ├── med.h │ │ │ ├── med2_load.c │ │ │ ├── med3_load.c │ │ │ ├── med4_load.c │ │ │ ├── mmd1_load.c │ │ │ ├── mmd3_load.c │ │ │ ├── mmd_common.c │ │ │ ├── mod.h │ │ │ ├── mod_load.c │ │ │ ├── mtm_load.c │ │ │ ├── okt_load.c │ │ │ ├── s3m.h │ │ │ ├── s3m_load.c │ │ │ ├── sample.c │ │ │ ├── st_load.c │ │ │ ├── stm_load.c │ │ │ ├── ult_load.c │ │ │ ├── xm.h │ │ │ └── xm_load.c │ │ ├── md5.c │ │ ├── md5.h │ │ ├── mdataio.h │ │ ├── med_extras.c │ │ ├── med_extras.h │ │ ├── memio.c │ │ ├── memio.h │ │ ├── mix_all.c │ │ ├── mixer.c │ │ ├── mixer.h │ │ ├── period.c │ │ ├── period.h │ │ ├── player.c │ │ ├── player.h │ │ ├── precomp_lut.h │ │ ├── read_event.c │ │ ├── rng.c │ │ ├── rng.h │ │ ├── scan.c │ │ ├── smix.c │ │ ├── tempfile.h │ │ ├── virtual.c │ │ └── virtual.h │ ├── mzvplay/ │ │ └── mzvplay.txt │ ├── patches/ │ │ ├── libmodplug/ │ │ │ ├── 01-libmodplug-0.8.9.0-fix-looping.diff │ │ │ ├── 02-libmodplug-0.8.9.0-fix-X86_Convert32To24.diff │ │ │ ├── 03-libmodplug-0.8.9.0-if0-dead-code-make-globals-static.diff │ │ │ ├── 04-libmodplug-0.8.9.0-remove-unused-loaders.diff │ │ │ ├── 05-libmodplug-0.8.9.0-fix-type-punning-warnings.diff │ │ │ ├── 06-libmodplug-0.8.9.0-remove-unused-defines.diff │ │ │ ├── 07-libmodplug-0.8.9.0-misc-warning-fixes.diff │ │ │ ├── 08-libmodplug-0.8.9.0-remove-set-but-unused-variables.diff │ │ │ ├── 09-libmodplug-0.8.9.0-remove-dll-defines.diff │ │ │ ├── 10-libmodplug-0.8.9.0-fix-far-volume.diff │ │ │ ├── 11-libmodplug-0.8.9.0-fix-okt-order-list.diff │ │ │ ├── 12-libmodplug-0.8.9.0-add-mod-cd61-magic.diff │ │ │ ├── 13-libmodplug-0.8.9.0-fix-669-tempo.diff │ │ │ ├── 14-libmodplug-0.8.9.0-add-gdm-loader.diff │ │ │ └── readme.txt │ │ └── libxmp/ │ │ ├── 01-libxmp-mzx-integration.patch │ │ ├── 02-libxmp-mzx-remove-extra-formats.patch │ │ ├── 03-libxmp-real-max-srate.patch │ │ └── README │ └── rad/ │ ├── README.md │ ├── opal.cpp │ ├── player20.cpp │ ├── test_nested_riffs.rad │ ├── test_nested_riffs_transpose.rad │ └── validate20.cpp ├── debian/ │ ├── README │ ├── binary.lintian-overrides │ ├── changelog │ ├── compat │ ├── control │ ├── copyright │ ├── docs │ ├── megazeux.manpages │ └── rules ├── docs/ │ ├── SDLkeys.txt │ ├── STYLE.md │ ├── WIPHelp.txt │ ├── changelog.txt │ ├── counter_list.txt │ ├── cycles_and_commands.txt │ ├── exotic.txt │ ├── exotic_translations.txt │ ├── fileform.html │ ├── idle_direction_oddities.txt │ ├── info_mzx.txt │ ├── joystick.html │ ├── keycodes.html │ ├── macro.txt │ ├── megazeux.1 │ ├── mzxhelp.html │ ├── old/ │ │ ├── betatest.txt │ │ ├── filef200.txt │ │ ├── filef268.txt │ │ ├── fileform.txt │ │ ├── megazeux.doc │ │ ├── mzm.txt │ │ └── port.txt │ ├── platform_matrix.html │ └── push_and_transport.txt ├── megazeux.spec ├── scripts/ │ ├── ajs-buildscripts/ │ │ ├── README │ │ ├── amiga.sh │ │ ├── build-rev.sh │ │ ├── build.sh │ │ ├── darwin.sh │ │ ├── global.sh │ │ ├── gp2x.sh │ │ ├── nds.sh │ │ ├── psp.sh │ │ ├── wii.sh │ │ ├── windows-x64.sh │ │ ├── windows-x86.sh │ │ └── zip-split-debug.sh │ ├── buildscripts/ │ │ ├── 1_PrepareReleaseEnvironment.bat │ │ ├── 2_CreateReleases.bat │ │ ├── 3_PackageReleases.bat │ │ ├── 4_UploadReleases.bat │ │ ├── README.md │ │ ├── mzx-build.sh │ │ ├── mzx-check.sh │ │ ├── mzx-init.sh │ │ ├── mzx-nightly.sh │ │ ├── mzx-scripts/ │ │ │ ├── build.sh │ │ │ ├── caverns.sh │ │ │ ├── common-dkp.sh │ │ │ ├── common-mingw.sh │ │ │ ├── common.sh │ │ │ ├── crlf.sh │ │ │ ├── patches/ │ │ │ │ └── pspge.patch │ │ │ ├── platforms/ │ │ │ │ ├── 3ds.sh │ │ │ │ ├── android.sh │ │ │ │ ├── default.sh │ │ │ │ ├── djgpp.sh │ │ │ │ ├── dreamcast.sh │ │ │ │ ├── emscripten.sh │ │ │ │ ├── nds-blocksds.sh │ │ │ │ ├── nds.sh │ │ │ │ ├── psp.sh │ │ │ │ ├── psvita.sh │ │ │ │ ├── source.sh │ │ │ │ ├── switch.sh │ │ │ │ ├── wii.sh │ │ │ │ ├── wiiu.sh │ │ │ │ ├── windows-x64.sh │ │ │ │ └── windows-x86.sh │ │ │ ├── setup.sh │ │ │ ├── updates.sh │ │ │ ├── uploads.sh │ │ │ └── version.sh │ │ ├── mzx-updates.sh │ │ └── mzx-upload.sh │ ├── deps/ │ │ ├── Makefile │ │ ├── Makefile.djgpp.in │ │ ├── Makefile.linux-msan.in │ │ ├── Makefile.macos.in │ │ ├── Makefile.mingw.in │ │ ├── Makefile.xcode.in │ │ ├── README.md │ │ ├── fix-vorbis-1.3.7-build-framework.patch │ │ └── panther_SDL2_fixes.patch │ └── pkg/ │ ├── README.md │ ├── alpine/ │ │ └── APKBUILD │ ├── archlinux/ │ │ ├── PKGBUILD.template │ │ └── update-pkgbuild.sh │ ├── flatpak/ │ │ └── com.digitalmzx.MegaZeux.yml │ ├── macports/ │ │ └── Portfile │ ├── nix/ │ │ └── default.nix │ └── voidlinux/ │ ├── template │ └── update ├── src/ │ ├── Makefile.in │ ├── SDLmzx.h │ ├── about.c │ ├── about.h │ ├── audio/ │ │ ├── audio.c │ │ ├── audio.h │ │ ├── audio_mikmod.c │ │ ├── audio_mikmod.h │ │ ├── audio_modplug.cpp │ │ ├── audio_modplug.h │ │ ├── audio_openmpt.c │ │ ├── audio_openmpt.h │ │ ├── audio_pcs.c │ │ ├── audio_pcs.h │ │ ├── audio_reality.cpp │ │ ├── audio_reality.h │ │ ├── audio_sdl.c │ │ ├── audio_struct.h │ │ ├── audio_vorbis.c │ │ ├── audio_vorbis.h │ │ ├── audio_wav.c │ │ ├── audio_wav.h │ │ ├── audio_xmp.c │ │ ├── audio_xmp.h │ │ ├── driver_sdl3.c │ │ ├── ext.c │ │ ├── ext.h │ │ ├── sampled_stream.cpp │ │ ├── sampled_stream.h │ │ ├── sfx.c │ │ └── sfx.h │ ├── block.c │ ├── block.h │ ├── board.c │ ├── board.h │ ├── board_struct.h │ ├── caption.c │ ├── caption.h │ ├── compat.h │ ├── configure.c │ ├── configure.h │ ├── const.h │ ├── core.c │ ├── core.h │ ├── core_task.c │ ├── core_task.h │ ├── counter.c │ ├── counter.h │ ├── counter_struct.h │ ├── data.c │ ├── data.h │ ├── editor/ │ │ ├── Makefile.in │ │ ├── ansi.c │ │ ├── ansi.h │ │ ├── block.c │ │ ├── block.h │ │ ├── board.c │ │ ├── board.h │ │ ├── buffer.c │ │ ├── buffer.h │ │ ├── buffer_struct.h │ │ ├── char_ed.c │ │ ├── char_ed.h │ │ ├── clipboard.h │ │ ├── clipboard_carbon.c │ │ ├── clipboard_cocoa.m │ │ ├── clipboard_null.c │ │ ├── clipboard_sdl2.c │ │ ├── clipboard_win32.c │ │ ├── clipboard_x11.c │ │ ├── configure.c │ │ ├── configure.h │ │ ├── debug.c │ │ ├── debug.h │ │ ├── edit.c │ │ ├── edit.h │ │ ├── edit_di.c │ │ ├── edit_di.h │ │ ├── edit_export.c │ │ ├── edit_export.h │ │ ├── edit_menu.c │ │ ├── edit_menu.h │ │ ├── fill.c │ │ ├── fill.h │ │ ├── graphics.c │ │ ├── graphics.h │ │ ├── macro.c │ │ ├── macro.h │ │ ├── macro_struct.h │ │ ├── pal_ed.c │ │ ├── pal_ed.h │ │ ├── param.c │ │ ├── param.h │ │ ├── robo_debug.c │ │ ├── robo_debug.h │ │ ├── robo_ed.c │ │ ├── robo_ed.h │ │ ├── robot.c │ │ ├── robot.h │ │ ├── select.c │ │ ├── select.h │ │ ├── sfx_edit.c │ │ ├── sfx_edit.h │ │ ├── stringsearch.c │ │ ├── stringsearch.h │ │ ├── undo.c │ │ ├── undo.h │ │ ├── window.c │ │ ├── window.h │ │ ├── world.c │ │ └── world.h │ ├── error.c │ ├── error.h │ ├── event.c │ ├── event.h │ ├── event_sdl.c │ ├── expr.c │ ├── expr.h │ ├── extmem.c │ ├── extmem.h │ ├── game.c │ ├── game.h │ ├── game_menu.c │ ├── game_menu.h │ ├── game_ops.c │ ├── game_ops.h │ ├── game_player.c │ ├── game_player.h │ ├── game_update.c │ ├── game_update.h │ ├── game_update_board.c │ ├── graphics.c │ ├── graphics.h │ ├── hashtable.h │ ├── helpsys.c │ ├── helpsys.h │ ├── idarray.c │ ├── idarray.h │ ├── idput.c │ ├── idput.h │ ├── intake.c │ ├── intake.h │ ├── intake_num.c │ ├── intake_num.h │ ├── io/ │ │ ├── bitstream.h │ │ ├── fsafeopen.c │ │ ├── fsafeopen.h │ │ ├── memfile.h │ │ ├── path.c │ │ ├── path.h │ │ ├── vfile.h │ │ ├── vfs.c │ │ ├── vfs.h │ │ ├── vio.c │ │ ├── vio.h │ │ ├── vio_no_vfs.c │ │ ├── vio_posix.h │ │ ├── vio_volume.h │ │ ├── vio_win32.h │ │ ├── zip.c │ │ ├── zip.h │ │ ├── zip_deflate.h │ │ ├── zip_deflate64.h │ │ ├── zip_dict.h │ │ ├── zip_implode.h │ │ ├── zip_reduce.h │ │ ├── zip_shrink.h │ │ ├── zip_stream.c │ │ └── zip_stream.h │ ├── keysym.h │ ├── legacy_board.c │ ├── legacy_board.h │ ├── legacy_rasm.c │ ├── legacy_rasm.h │ ├── legacy_robot.c │ ├── legacy_robot.h │ ├── legacy_world.c │ ├── legacy_world.h │ ├── main.c │ ├── memcasecmp.h │ ├── mzm.c │ ├── mzm.h │ ├── network/ │ │ ├── DNS.cpp │ │ ├── DNS.hpp │ │ ├── HTTPHost.cpp │ │ ├── HTTPHost.hpp │ │ ├── Host.cpp │ │ ├── Host.hpp │ │ ├── Manifest.cpp │ │ ├── Manifest.hpp │ │ ├── Scoped.hpp │ │ ├── Socket.cpp │ │ ├── Socket.hpp │ │ ├── network.cpp │ │ ├── network.h │ │ ├── server.cpp │ │ ├── sha256.c │ │ └── sha256.h │ ├── nostdc++.cpp │ ├── old/ │ │ ├── legacy_save.c │ │ ├── legacy_save.h │ │ └── render_layer_code.h │ ├── platform.h │ ├── platform_attribute.h │ ├── platform_dummy.c │ ├── platform_endian.h │ ├── platform_sdl.c │ ├── platform_time.c │ ├── pngops.c │ ├── pngops.h │ ├── rasm.c │ ├── rasm.h │ ├── render.c │ ├── render.h │ ├── render_egl.c │ ├── render_egl.h │ ├── render_gl.c │ ├── render_gl.h │ ├── render_gl1.c │ ├── render_gl2.c │ ├── render_glsl.c │ ├── render_gp2x.c │ ├── render_layer.cpp │ ├── render_layer.h │ ├── render_layer_code.hpp │ ├── render_layer_common.hpp │ ├── render_sdl.c │ ├── render_sdl.h │ ├── render_sdlaccel.c │ ├── render_soft.c │ ├── render_softscale.c │ ├── render_yuv.c │ ├── renderers.h │ ├── robot.c │ ├── robot.h │ ├── robot_struct.h │ ├── run_robot.c │ ├── run_stubs.c │ ├── run_stubs.h │ ├── scrdisp.c │ ├── scrdisp.h │ ├── settings.c │ ├── settings.h │ ├── sprite.c │ ├── sprite.h │ ├── sprite_struct.h │ ├── str.c │ ├── str.h │ ├── thread_debug.h │ ├── thread_dummy.h │ ├── thread_pthread.h │ ├── thread_sdl.h │ ├── thread_win32.h │ ├── updater.cpp │ ├── updater.h │ ├── util.c │ ├── util.h │ ├── utils/ │ │ ├── Makefile.in │ │ ├── ccv.c │ │ ├── checkres.c │ │ ├── downver.c │ │ ├── hlp2html.c │ │ ├── hlp2txt.c │ │ ├── image_common.h │ │ ├── image_file.c │ │ ├── image_file.h │ │ ├── image_gif.c │ │ ├── image_gif.h │ │ ├── png2smzx.c │ │ ├── smzxconv.c │ │ ├── smzxconv.h │ │ ├── txt2hlp.c │ │ ├── uthash.h │ │ ├── utils_alloc.h │ │ ├── y4m.c │ │ ├── y4m.h │ │ └── y4m2smzx.c │ ├── window.c │ ├── window.h │ ├── world.c │ ├── world.h │ ├── world_format.h │ ├── world_struct.h │ └── yuv.h ├── testworlds/ │ ├── 1.00/ │ │ ├── 000 Format.mzx │ │ ├── 000 Format.txt │ │ ├── 001 Locked.mzx │ │ ├── 001 Locked.txt │ │ ├── 002 Robo-P Convert.mzx │ │ ├── 002 Robo-P Convert.txt │ │ ├── 003 Char Escapes.mzx │ │ ├── 003 Char Escapes.txt │ │ ├── 004 cur_prog_line.mzx │ │ ├── 004 cur_prog_line.txt │ │ ├── 005 bad cur_prog_line.mzx │ │ ├── 005 bad cur_prog_line.txt │ │ ├── 006 firewalker_dur.mzx │ │ ├── 006 firewalker_dur.txt │ │ ├── 007 wind_dur.mzx │ │ ├── 007 wind_dur.txt │ │ ├── 008 slimeblob.mzx │ │ ├── 008 slimeblob.txt │ │ ├── 009 scan.mzx │ │ ├── 009 scan.txt │ │ ├── 010 rel counters copy.mzx │ │ ├── 010 rel counters copy.txt │ │ ├── 011 Entrances.mzx │ │ ├── 011 Entrances.txt │ │ ├── 012 TELEPORT skip.mzx │ │ ├── 012 TELEPORT skip.txt │ │ ├── 013 Robo-P Color Param.mzx │ │ ├── 013 Robo-P Color Param.txt │ │ ├── 014 Tiger Intel. Movement.mzx │ │ └── 014 Tiger Intel. Movement.txt │ ├── 2.51/ │ │ ├── 000 Swap Test.mzx │ │ ├── 000 Swap Test.txt │ │ ├── 001 Copy No-Restart.mzx │ │ ├── 001 Copy No-Restart.txt │ │ ├── 002 Shoot No-Cycle.mzx │ │ ├── 002 Shoot No-Cycle.txt │ │ ├── 003 Endgame Teleport.mzx │ │ ├── 003 Endgame Teleport.txt │ │ ├── 004 Entrances.mzx │ │ ├── 004 Entrances.txt │ │ ├── 005 COPY player thisx.mzx │ │ ├── 005 COPY player thisx.txt │ │ ├── 006 ZAP RESTORE.mzx │ │ ├── 006 ZAP RESTORE.txt │ │ ├── 007 LOCAL.mzx │ │ ├── 007 LOCAL.txt │ │ ├── 008 Null Boards.mzx │ │ ├── 008 Null Boards.txt │ │ ├── 009 Shark Goop.mzx │ │ ├── 009 Shark Goop.txt │ │ ├── 010 INPUT STRING.MZX │ │ ├── 010 INPUT STRING.txt │ │ ├── 011 Bad Message Row.mzx │ │ ├── 011 Bad Message Row.txt │ │ ├── 012 Custom SFX.mzx │ │ ├── 012 Custom SFX.txt │ │ ├── 013 slimeblob.mzx │ │ ├── 013 slimeblob.txt │ │ ├── 014 scan.mzx │ │ ├── 014 scan.txt │ │ ├── 015 rel counters copy.mzx │ │ ├── 015 rel counters copy.txt │ │ ├── 016 IF ALIGNEDROBOT.mzx │ │ ├── 016 IF ALIGNEDROBOT.txt │ │ ├── 017 TELEPORT noskip.mzx │ │ ├── 017 TELEPORT noskip.txt │ │ ├── 018 Robotic Color Param.mzx │ │ ├── 018 Robotic Color Param.txt │ │ ├── 019 Tiger Intel. Movement.mzx │ │ └── 019 Tiger Intel. Movement.txt │ ├── 2.51s1/ │ │ ├── 001 LOCAL.MZX │ │ └── 001 LOCAL.txt │ ├── 2.60/ │ │ ├── 001 SEND Lock.mzx │ │ ├── 001 SEND Lock.txt │ │ ├── 002 Label Cycle-Ending.mzx │ │ ├── 002 Label Cycle-Ending.txt │ │ ├── 003 Robotic Color Param.mzx │ │ └── 003 Robotic Color Param.txt │ ├── 2.62/ │ │ ├── 001 SET string INPUT.MZX │ │ └── 001 SET string INPUT.txt │ ├── 2.65/ │ │ ├── 001 IF ANY.mzx │ │ ├── 002 GOSTACK.MZX │ │ ├── 003 SPR_NUM.mzx │ │ ├── 003 SPR_NUM.txt │ │ ├── 004 Static Sprite Collision.mzx │ │ ├── 004 Static Sprite Collision.txt │ │ ├── 005 IF ALIGNEDROBOT.mzx │ │ └── 005 IF ALIGNEDROBOT.txt │ ├── 2.69/ │ │ ├── 001 SET &$string&.mzx │ │ └── 002 String in expression.mzx │ ├── 2.69c/ │ │ ├── 001 vlayer.mzx │ │ ├── 002 COPY BLOCK $string.mzx │ │ └── 003 vlayer copy player.mzx │ ├── 2.70/ │ │ ├── 001 BOARD_COLOR No-bleed.mzx │ │ ├── 002 LOAD_ROBOT.mzx │ │ ├── 003 SPR_NUM.mzx │ │ ├── 004 Terminated Str Cmp.mzx │ │ ├── 005 Robotic Color Param.mzx │ │ └── 005 Robotic Color Param.txt │ ├── 2.80/ │ │ ├── 001 IF ANY.mzx │ │ ├── 002 Copy Restart.mzx │ │ ├── 003 Go Stack.mzx │ │ ├── 004 Autodecrypt.mzx │ │ ├── 005 SEND No-Lock.mzx │ │ ├── 006 BOARD_COLOR Bleed.mzx │ │ ├── 007 Endgame Teleport.mzx │ │ ├── 008 set counter str.mzx │ │ ├── 009 FWRITE String.mzx │ │ ├── 010 Robot position.mzx │ │ ├── 011 LOCAL.mzx │ │ ├── 012 BYTE 14.mzx │ │ ├── 013 Robot Stack.mzx │ │ ├── 014 Label Not Cycle-Ending.mzx │ │ ├── 015 INPUT STRING Expr.mzx │ │ ├── 016 IF ALIGNEDROBOT.mzx │ │ ├── 017 Robotic Color Param.mzx │ │ ├── 018 out-of-bounds idput.mzx │ │ ├── 019 Tiger Intel. Movement.mzx │ │ └── d01 Char ID 255.mzx │ ├── 2.81/ │ │ ├── 001 VLAYER_SIZE.mzx │ │ ├── 002 String Splice Assignment.mzx │ │ ├── b00 SAVE_GAME pos.mzx │ │ ├── b01 SAVE_GAME ZAP.mzx │ │ ├── e01 Expressions.mzx │ │ └── e02 Hex Interpolation.mzx │ ├── 2.82/ │ │ └── b01 FWRITE String.mzx │ ├── 2.83/ │ │ └── 001 Shoot Cycle.mzx │ ├── 2.84/ │ │ ├── 001 MZM3 size.mzx │ │ ├── 002 Load 2.84 Save.mzx │ │ ├── 003 COPY prefix.mzx │ │ ├── 004 Arithmetic Rsh.mzx │ │ ├── 005 Builtin Sub.mzx │ │ ├── 006 MZX_SPEED.mzx │ │ ├── 007 Delimiters.mzx │ │ ├── 008 ARCTAN.mzx │ │ ├── 009 set random.mzx │ │ ├── 010 MIN MAX.mzx │ │ ├── 011 LOAD_ROBOT spaces.mzx │ │ ├── b01 Future MZM.mzx │ │ └── c01 global color.mzx │ ├── 2.90/ │ │ ├── 000 Format.mzx │ │ ├── 001 Rearchive.mzx │ │ ├── 002 Data Descriptor.mzx │ │ ├── 003 Go Stack.mzx │ │ ├── 004 GOOP_WALK.mzx │ │ ├── 005 Reset Entry.mzx │ │ ├── 006 Asset Entry.mzx │ │ ├── 007 Sensor Push.mzx │ │ ├── 008 Board ext chars.mzx │ │ ├── 009 MOD_NAME Fail.mzx │ │ ├── 010 SAM-WAV Translate.mzx │ │ ├── 011 LOAD CHAR SET str.mzx │ │ ├── 012 LOAD PALETTE str.mzx │ │ ├── 013 MZM str.mzx │ │ ├── 014 Title Reset Entry.mzx │ │ ├── 015 No Reset same board.mzx │ │ ├── 016 Static Sprite Collision.mzx │ │ ├── 017 Robotic Color Param.mzx │ │ ├── b01 Counter Ineq.mzx │ │ ├── d00 Nested Ternary.mzx │ │ └── d01 Native SAM.mzx │ ├── 2.91/ │ │ ├── 000 Format.mzx │ │ ├── 001 Copy Block Splice.mzx │ │ ├── 002 Wildcards.mzx │ │ ├── 003 ccheck3 clip.mzx │ │ ├── 004 MOD_LENGTH.mzx │ │ ├── 005 String Valid.mzx │ │ ├── 006 String Neg Off.mzx │ │ ├── 007 String Idx Enh.mzx │ │ ├── 008 LOAD_COUNTERS.mzx │ │ ├── 009 Sprite Bounds.mzx │ │ ├── 010 saved vlayer.mzx │ │ ├── 011 remap vlayer.mzx │ │ ├── b00 String Inequlty.mzx │ │ ├── c00 Ternary Expr.mzx │ │ ├── c01 fsafetranslate.mzx │ │ ├── c02 st_load.mzx │ │ ├── c03 slow_down.mzx │ │ ├── e00 Board ext chars.mzx │ │ ├── e01 Str compare.mzx │ │ ├── g00 MZM str length.mzx │ │ ├── g01 SLOW TIME.mzx │ │ └── h00 FWRITEn.mzx │ ├── 2.92/ │ │ ├── 001 FWRITE String.mzx │ │ ├── 002 RAD.mzx │ │ ├── 003 SPR#_OFF read.mzx │ │ ├── 004 Robot position.mzx │ │ ├── 005 FREAD_LENGTH.mzx │ │ ├── 006 MOD_LOOPSTART.mzx │ │ ├── 007 SAVE_ROBOTn str.mzx │ │ ├── 008 SPR_NUM.mzx │ │ ├── 100 IF &$string&.mzx │ │ ├── c01 Ternary idents.mzx │ │ ├── c02 BYTE 14.mzx │ │ ├── d01 fsafetranslate SFN.mzx │ │ ├── d02 SMZX ccheck3.mzx │ │ ├── g01 LOAD CHAR SET crash.mzx │ │ ├── g02 String MZM Size.mzx │ │ ├── g03 Reset Missing Temp.mzx │ │ ├── g04 set random range.mzx │ │ ├── g05 divide INT_MIN -1.mzx │ │ ├── g06 Bad Current Board.290.mzx │ │ ├── g07 Bad Current Board.284.mzx │ │ ├── g08 Bad Board IDs.mzx │ │ ├── g09 Bad Saved Pos.290.mzx │ │ ├── g10 Bad Saved Pos.284.mzx │ │ ├── g11 Bad cur_prog_line.290.mzx │ │ ├── g12 Bad cur_prog_line.284.mzx │ │ ├── g13 Bad stack pointer.290.mzx │ │ ├── g14 Bad stack pointer.284.mzx │ │ ├── g15 Bad stack size.284.mzx │ │ ├── g16 Bad Message Row.mzx │ │ ├── g17 Bad stack frame.290.mzx │ │ ├── g18 Bad stack frame.284.mzx │ │ ├── g19 Invalid Robotic Item.mzx │ │ └── g20 Invalid Condition.mzx │ ├── 2.93/ │ │ ├── 000 Format.mzx │ │ ├── 001 Custom SFX.mzx │ │ ├── 002 Custom SFX (old).mzx │ │ ├── 003 FWRITE Mode Save Test.mzx │ │ ├── 004 MZX Pal in SMZX Mode.mzx │ │ ├── 005 Viewport Counters.mzx │ │ ├── 006 DATE_WEEKDAY.mzx │ │ ├── 007 playerdied.mzx │ │ ├── 008 Dragon Random.mzx │ │ ├── 009 Reset same board off.mzx │ │ ├── 010 Reset same board on.mzx │ │ ├── 011 SPRn_OFFONEXIT.mzx │ │ ├── 012 Static Sprite Collision.mzx │ │ ├── b01 String Splice Assignment.mzx │ │ ├── b02 String Splice FREAD Crash.mzx │ │ ├── b03 IF ALIGNEDROBOT.mzx │ │ ├── c01 CHANGE OVERLAY immediate.mzx │ │ └── e01 DOS chars devices.mzx │ ├── 2.XX/ │ │ └── 000 MOD Formats.mzx │ ├── README.md │ ├── data/ │ │ ├── LOCKED.MZX │ │ ├── README.md │ │ ├── audio/ │ │ │ ├── 1s.ogg │ │ │ ├── 1s_badtag.ogg │ │ │ ├── CRYSTALS.WOW │ │ │ ├── CV_BOSS.MOD │ │ │ ├── GBUSTERS.MOD │ │ │ ├── PAIN.SAM │ │ │ ├── SX-shrine.it │ │ │ ├── Shayde - Canon in D.rad │ │ │ ├── Void - Dystopia.rad │ │ │ ├── XON_BATT.AMF │ │ │ ├── analog.ult │ │ │ ├── basket.s3m │ │ │ ├── bit_loader.xm │ │ │ ├── black_box.okt │ │ │ ├── bluesy.mod │ │ │ ├── chip_happy.med │ │ │ ├── crystals.669 │ │ │ ├── desecret.mod │ │ │ ├── drivin.gdm │ │ │ ├── ekorren.mod │ │ │ ├── fiercest.amf │ │ │ ├── georythm.stm │ │ │ ├── gidion graveland.mod │ │ │ ├── jul-paaske.mod │ │ │ ├── mindflux.rad │ │ │ ├── misimprm.mod │ │ │ ├── moods-yeah.med │ │ │ ├── new age.mod │ │ │ ├── no_tears.med │ │ │ ├── popcorn.dsm │ │ │ ├── ref 8.mod │ │ │ ├── rip4.rad │ │ │ ├── s0d.mod │ │ │ ├── soap bubble.mod │ │ │ ├── something's amiss.mtm │ │ │ ├── the rain in the ruin.far │ │ │ ├── wizardry.med │ │ │ └── xxy_cursor.ogg │ │ ├── bad_cur_prog_line.284.sav │ │ ├── bad_cur_prog_line.290.sav │ │ ├── bad_current_board.284.sav │ │ ├── bad_current_board.290.sav │ │ ├── bad_saved_pos_board.284.sav │ │ ├── bad_saved_pos_board.290.sav │ │ ├── bad_stack_frame.284.sav │ │ ├── bad_stack_frame.290.sav │ │ ├── bad_stack_pointer.284.sav │ │ ├── bad_stack_pointer.290.sav │ │ ├── bad_stack_size.284.sav │ │ ├── futer.mzm │ │ ├── loadassetentryA.chr │ │ ├── loadassetentryA.pal │ │ ├── loadassetentryB.chr │ │ ├── loadassetentryB.pal │ │ ├── reset_entry_no_temp.sav │ │ ├── saved.284c.sav │ │ └── spaces.txt │ ├── run.sh │ └── temp/ │ └── README.md ├── unit/ │ ├── Makefile.in │ ├── Unit.cpp │ ├── Unit.hpp │ ├── UnitIO.cpp │ ├── UnitIO.hpp │ ├── align.cpp │ ├── audio/ │ │ ├── mixer/ │ │ │ ├── CUBIC_mm.raw │ │ │ ├── CUBIC_mm_dyn.raw │ │ │ ├── CUBIC_ms.raw │ │ │ ├── CUBIC_ms_dyn.raw │ │ │ ├── CUBIC_sm.raw │ │ │ ├── CUBIC_sm_dyn.raw │ │ │ ├── CUBIC_ss.raw │ │ │ ├── CUBIC_ss_dyn.raw │ │ │ ├── FLAT_mm.raw │ │ │ ├── FLAT_mm_dyn.raw │ │ │ ├── FLAT_ms.raw │ │ │ ├── FLAT_ms_dyn.raw │ │ │ ├── FLAT_sm.raw │ │ │ ├── FLAT_sm_dyn.raw │ │ │ ├── FLAT_ss.raw │ │ │ ├── FLAT_ss_dyn.raw │ │ │ ├── LINEAR_mm.raw │ │ │ ├── LINEAR_mm_dyn.raw │ │ │ ├── LINEAR_ms.raw │ │ │ ├── LINEAR_ms_dyn.raw │ │ │ ├── LINEAR_sm.raw │ │ │ ├── LINEAR_sm_dyn.raw │ │ │ ├── LINEAR_ss.raw │ │ │ ├── LINEAR_ss_dyn.raw │ │ │ ├── NEAREST_mm.raw │ │ │ ├── NEAREST_mm_dyn.raw │ │ │ ├── NEAREST_ms.raw │ │ │ ├── NEAREST_ms_dyn.raw │ │ │ ├── NEAREST_sm.raw │ │ │ ├── NEAREST_sm_dyn.raw │ │ │ ├── NEAREST_ss.raw │ │ │ ├── NEAREST_ss_dyn.raw │ │ │ ├── m.raw │ │ │ └── s.raw │ │ └── mixer.cpp │ ├── configure.cpp │ ├── editor/ │ │ └── stringsearch.cpp │ ├── expr.cpp │ ├── intake.cpp │ ├── io/ │ │ ├── bitstream.cpp │ │ ├── data/ │ │ │ ├── CN_S.CHR │ │ │ ├── CN_S.CHR.deflate │ │ │ ├── CN_S.CHR.implode │ │ │ ├── CN_S.CHR.reduce1 │ │ │ ├── CN_S.CHR.reduce2 │ │ │ ├── CN_S.CHR.reduce3 │ │ │ ├── CN_S.CHR.reduce4 │ │ │ ├── CN_S.CHR.shrink │ │ │ ├── CT_LEVEL.MOD │ │ │ ├── FREAKSOF.MZX │ │ │ ├── ct_level.deflate │ │ │ ├── ct_level.deflate64 │ │ │ ├── ct_level.implode │ │ │ ├── ct_level.reduce1 │ │ │ ├── ct_level.reduce2 │ │ │ ├── ct_level.reduce3 │ │ │ ├── ct_level.reduce4 │ │ │ ├── ct_level.shrink │ │ │ ├── dch1.deflate │ │ │ ├── dch1.deflate64 │ │ │ ├── dch1.implode │ │ │ ├── dch1.reduce1 │ │ │ ├── dch1.reduce2 │ │ │ ├── dch1.reduce3 │ │ │ ├── dch1.reduce4 │ │ │ ├── dch1.shrink │ │ │ ├── dch1.txt │ │ │ ├── dch1.zip64 │ │ │ ├── freaksof.deflate │ │ │ ├── freaksof.deflate64 │ │ │ ├── freaksof.implode │ │ │ ├── freaksof.reduce1 │ │ │ ├── freaksof.reduce2 │ │ │ ├── freaksof.reduce3 │ │ │ ├── freaksof.reduce4 │ │ │ ├── freaksof.shrink │ │ │ └── zip64/ │ │ │ └── zip64gen.cpp │ │ ├── memfile.cpp │ │ ├── path.cpp │ │ ├── vfs.cpp │ │ ├── vio.cpp │ │ └── zip.cpp │ ├── memcasecmp.cpp │ ├── network/ │ │ ├── Manifest.cpp │ │ ├── data/ │ │ │ ├── 1.txt │ │ │ ├── 2.txt │ │ │ └── manifest.txt │ │ └── sha256.cpp │ ├── render.cpp │ ├── sfx.cpp │ ├── thread.cpp │ ├── thread.hpp │ ├── thread_win32.cpp │ ├── utils/ │ │ ├── image_file/ │ │ │ ├── farbfeld.ff │ │ │ ├── p1.pbm │ │ │ ├── p2.pgm │ │ │ ├── p2_18.pgm │ │ │ ├── p2_64.pgm │ │ │ ├── p3.ppm │ │ │ ├── p3_18.ppm │ │ │ ├── p3_64.ppm │ │ │ ├── p4.pbm │ │ │ ├── p5.pgm │ │ │ ├── p5_18.pgm │ │ │ ├── p5_64.pgm │ │ │ ├── p6.ppm │ │ │ ├── p6_18.ppm │ │ │ ├── p6_64.ppm │ │ │ ├── p7_gs.pam │ │ │ ├── p7_gs18.pam │ │ │ ├── p7_gs64.pam │ │ │ ├── p7_gsa.pam │ │ │ ├── p7_gsa18.pam │ │ │ ├── p7_gsa64.pam │ │ │ ├── p7_rgb.pam │ │ │ ├── p7_rgb18.pam │ │ │ ├── p7_rgb64.pam │ │ │ ├── p7_rgba.pam │ │ │ ├── p7_rgba18.pam │ │ │ ├── p7_rgba64.pam │ │ │ ├── raw_gs.raw │ │ │ ├── raw_gsa.raw │ │ │ ├── raw_rgb.raw │ │ │ ├── raw_rgba.raw │ │ │ ├── tga_15bpp.tga │ │ │ ├── tga_16bpp.tga │ │ │ ├── tga_16bpp_rle.tga │ │ │ ├── tga_16bpp_ttb.tga │ │ │ ├── tga_16bpp_ttb_rle.tga │ │ │ ├── tga_24bpp.tga │ │ │ ├── tga_24bpp_rle.tga │ │ │ ├── tga_24bpp_ttb.tga │ │ │ ├── tga_24bpp_ttb_rle.tga │ │ │ ├── tga_32bpp.tga │ │ │ ├── tga_32bpp_rle.tga │ │ │ ├── tga_32bpp_rtl.tga │ │ │ ├── tga_32bpp_rtl_ttb.tga │ │ │ ├── tga_32bpp_ttb.tga │ │ │ ├── tga_32bpp_ttb_rle.tga │ │ │ ├── tga_g.tga │ │ │ ├── tga_g_rle.tga │ │ │ ├── tga_g_ttb.tga │ │ │ ├── tga_g_ttb_rle.tga │ │ │ ├── tga_idx16_32bpp.tga │ │ │ ├── tga_idx16_32bpp_rle.tga │ │ │ ├── tga_idx16_32bpp_ttb.tga │ │ │ ├── tga_idx16_32bpp_ttb_rle.tga │ │ │ ├── tga_idx8_15bpp.tga │ │ │ ├── tga_idx8_16bpp.tga │ │ │ ├── tga_idx8_16bpp_rle.tga │ │ │ ├── tga_idx8_16bpp_ttb.tga │ │ │ ├── tga_idx8_16bpp_ttb_rle.tga │ │ │ ├── tga_idx8_24bpp.tga │ │ │ ├── tga_idx8_24bpp_rle.tga │ │ │ ├── tga_idx8_24bpp_ttb.tga │ │ │ ├── tga_idx8_24bpp_ttb_rle.tga │ │ │ ├── tga_idx8_32bpp.tga │ │ │ ├── tga_idx8_32bpp_rle.tga │ │ │ ├── tga_idx8_32bpp_ttb.tga │ │ │ └── tga_idx8_32bpp_ttb_rle.tga │ │ └── image_file.cpp │ └── world.cpp ├── valgrind.supp └── version.inc
Showing preview only (690K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8617 symbols across 482 files)
FILE: arch/3ds/audio.c
function ndsp_callback (line 38) | static void ndsp_callback(void *dud)
function init_audio_platform (line 51) | void init_audio_platform(struct config_info *conf)
function quit_audio_platform (line 94) | void quit_audio_platform(void)
FILE: arch/3ds/event.c
type input_status (line 31) | struct input_status
type bottom_screen_mode (line 32) | enum bottom_screen_mode
type focus_mode (line 33) | enum focus_mode
function get_allow_focus_changes (line 38) | enum focus_mode get_allow_focus_changes(void)
function get_bottom_screen_mode (line 43) | enum bottom_screen_mode get_bottom_screen_mode(void)
function boolean (line 48) | boolean __update_event_status(void)
function boolean (line 56) | boolean __peek_exit_input(void)
function __wait_event (line 62) | void __wait_event(void)
function __warp_mouse (line 68) | void __warp_mouse(int x, int y)
function axis_convert (line 78) | static inline int16_t axis_convert(s16 value)
function boolean (line 84) | static inline boolean check_circle(struct buffered_status *status,
function boolean (line 105) | static inline boolean check_hat(struct buffered_status *status,
function boolean (line 124) | static inline boolean check_joy(struct buffered_status *status,
function boolean (line 143) | static inline boolean ctr_is_mouse_area(touchPosition *touch)
function boolean (line 164) | static inline boolean ctr_update_touch(struct buffered_status *status,
function boolean (line 208) | static inline boolean ctr_update_cstick(struct buffered_status *status)
function boolean (line 243) | boolean update_hid(void)
function ctr_get_subscreen_height (line 319) | int ctr_get_subscreen_height(void)
function boolean (line 331) | boolean platform_has_screen_keyboard(void)
function boolean (line 336) | boolean platform_show_screen_keyboard(void)
function boolean (line 343) | boolean platform_hide_screen_keyboard(void)
function boolean (line 350) | boolean platform_is_screen_keyboard_active(void)
function platform_init_event (line 355) | void platform_init_event(void)
FILE: arch/3ds/event.h
type focus_mode (line 36) | enum focus_mode
type bottom_screen_mode (line 43) | enum bottom_screen_mode
type focus_mode (line 44) | enum focus_mode
FILE: arch/3ds/keyboard.c
type keycode (line 36) | enum keycode
function boolean (line 125) | static inline boolean ctr_is_modifier(enum keycode keycode)
function boolean (line 130) | static inline boolean ctr_key_touched(touchPosition *pos, touch_area_t *...
function boolean (line 136) | boolean ctr_keyboard_force_zoom_out(void)
function ctr_keyboard_init (line 141) | void ctr_keyboard_init(struct ctr_render_data *render_data)
function ctr_keyboard_draw (line 146) | void ctr_keyboard_draw(struct ctr_render_data *render_data)
function boolean (line 185) | boolean ctr_keyboard_update(struct buffered_status *status)
FILE: arch/3ds/keyboard.h
function __M_BEGIN_DECLS (line 28) | __M_BEGIN_DECLS
type ctr_render_data (line 37) | struct ctr_render_data
type ctr_render_data (line 38) | struct ctr_render_data
type buffered_status (line 39) | struct buffered_status
FILE: arch/3ds/platform.c
function FILE (line 43) | FILE *popen(const char *command, const char *type)
function pclose (line 48) | int pclose(FILE *stream)
function delay (line 53) | void delay(uint32_t ms)
function boolean (line 61) | boolean ctr_is_2d(void)
function boolean (line 66) | boolean ctr_supports_wide(void)
function get_ticks (line 71) | uint64_t get_ticks(void)
function boolean (line 76) | boolean platform_init(void)
function platform_quit (line 91) | void platform_quit(void)
function out_of_linear_memory_check (line 101) | static void out_of_linear_memory_check(void *p, const char *file, int line)
function main (line 129) | int main(int argc, char *argv[])
FILE: arch/3ds/render.cpp
type ctr_shader_data (line 38) | struct ctr_shader_data
type ctr_layer (line 46) | struct ctr_layer
type v_char (line 52) | struct v_char
type v_char (line 56) | struct v_char
type vertex (line 63) | struct vertex
type linear_ptr_list_entry (line 71) | struct linear_ptr_list_entry
type linear_ptr_list_entry (line 74) | struct linear_ptr_list_entry
type ctr_render_data (line 87) | struct ctr_render_data
type ctr_shader_data (line 93) | struct ctr_shader_data
function boolean (line 142) | static boolean tex_w_h_constraint(png_uint_32 w, png_uint_32 h)
function to_texture_size (line 147) | static inline int to_texture_size(int v)
function ctr_set_2d_projection (line 174) | static inline void ctr_set_2d_projection(struct ctr_render_data *render_...
function ctr_set_2d_projection_screen (line 186) | static inline void ctr_set_2d_projection_screen(
function ctr_bind_shader (line 192) | static void ctr_bind_shader(struct ctr_shader_data *shader)
function ctr_prepare_2d (line 198) | static inline void ctr_prepare_2d(struct ctr_render_data *render_data,
function ctr_prepare_playfield (line 212) | static inline void ctr_prepare_playfield(struct ctr_render_data *render_...
function C3D_Tex (line 228) | C3D_Tex *ctr_load_png(const char *name)
type vertex (line 274) | struct vertex
function ctr_draw_2d_texture (line 276) | void ctr_draw_2d_texture(struct ctr_render_data *render_data, C3D_Tex *t...
function ctr_init_shader (line 339) | static void ctr_init_shader(struct ctr_shader_data *shader, const void *...
function ctr_request_set_wide (line 356) | void ctr_request_set_wide(bool wide)
function ctr_set_wide (line 362) | static void ctr_set_wide(struct ctr_render_data *render_data, bool wide)
function boolean (line 375) | static boolean ctr_init_video(struct graphics_data *graphics,
function ctr_free_video (line 502) | static void ctr_free_video(struct graphics_data *graphics)
function boolean (line 522) | static boolean ctr_create_window(struct graphics_data *graphics,
function ctr_update_colors (line 528) | static void ctr_update_colors(struct graphics_data *graphics,
function u32 (line 541) | static inline u32 ctr_get_char_texture_row(u32 chr)
function ctr_char_line_to_texture (line 550) | static inline void ctr_char_line_to_texture(
function ctr_remap_char_range (line 596) | static void ctr_remap_char_range(struct graphics_data *graphics, uint16_...
function ctr_remap_char (line 624) | static void ctr_remap_char(struct graphics_data *graphics, uint16_t chr)
function ctr_remap_charbyte (line 641) | static void ctr_remap_charbyte(struct graphics_data *graphics, uint16_t ...
function ctr_refresh_charsets (line 657) | static inline void ctr_refresh_charsets(struct ctr_render_data *render_d...
function boolean (line 713) | static boolean ctr_should_render(struct ctr_render_data *render_data)
function u32 (line 742) | static inline u32 ctr_char_texture_uv(u32 ch)
function ctr_render_layer_inner (line 751) | static void ctr_render_layer_inner(struct graphics_data *graphics,
function ctr_render_layer_inner (line 929) | static inline void ctr_render_layer_inner(struct graphics_data *graphics,
function ctr_render_layer_inner (line 939) | static inline void ctr_render_layer_inner(struct graphics_data *graphics,
function ctr_render_layer_inner (line 949) | static inline void ctr_render_layer_inner(struct graphics_data *graphics,
function ctr_render_layer (line 959) | static void ctr_render_layer(struct graphics_data *graphics,
function ctr_render_cursor (line 1036) | static void ctr_render_cursor(struct graphics_data *graphics, unsigned i...
function ctr_render_mouse (line 1049) | static void ctr_render_mouse(struct graphics_data *graphics,
function ctr_draw_playfield (line 1066) | static inline void ctr_draw_playfield(struct ctr_render_data *render_data,
function ctr_sync_screen (line 1138) | static void ctr_sync_screen(struct graphics_data *graphics,
function ctr_focus_pixel (line 1173) | static void ctr_focus_pixel(struct graphics_data *graphics,
function render_ctr_register (line 1198) | void render_ctr_register(struct renderer *renderer)
FILE: arch/3ds/render.h
type ctr_render_data (line 37) | struct ctr_render_data
FILE: arch/3ds/thread.h
type CondVar (line 34) | typedef CondVar platform_cond;
type LightLock (line 35) | typedef LightLock platform_mutex;
type LightSemaphore (line 36) | typedef LightSemaphore platform_sem;
type Thread (line 37) | typedef Thread platform_thread;
type Thread (line 38) | typedef Thread platform_thread_id;
type ThreadFunc (line 39) | typedef ThreadFunc platform_thread_fn;
function boolean (line 41) | static inline boolean platform_mutex_init(platform_mutex *mutex)
function boolean (line 47) | static inline boolean platform_mutex_destroy(platform_mutex *mutex)
function boolean (line 52) | static inline boolean platform_mutex_lock(platform_mutex *mutex)
function boolean (line 58) | static inline boolean platform_mutex_unlock(platform_mutex *mutex)
function boolean (line 64) | static inline boolean platform_cond_init(platform_cond *cond)
function boolean (line 70) | static inline boolean platform_cond_destroy(platform_cond *cond)
function boolean (line 75) | static inline boolean platform_cond_wait(platform_cond *cond,
function boolean (line 82) | static inline boolean platform_cond_timedwait(platform_cond *cond,
function boolean (line 91) | static inline boolean platform_cond_signal(platform_cond *cond)
function boolean (line 97) | static inline boolean platform_cond_broadcast(platform_cond *cond)
function boolean (line 103) | static inline boolean platform_sem_init(platform_sem *sem, unsigned init...
function boolean (line 111) | static inline boolean platform_sem_destroy(platform_sem *sem)
function boolean (line 116) | static inline boolean platform_sem_wait(platform_sem *sem)
function boolean (line 122) | static inline boolean platform_sem_post(platform_sem *sem)
function boolean (line 128) | static inline boolean platform_thread_create(platform_thread *thread,
function boolean (line 145) | static inline boolean platform_thread_join(platform_thread *thread)
function platform_thread_id (line 152) | static inline platform_thread_id platform_get_thread_id(void)
function boolean (line 157) | static inline boolean platform_is_same_thread(platform_thread_id a,
FILE: arch/android/config_types.h
type ogg_int16_t (line 6) | typedef int16_t ogg_int16_t;
type ogg_uint16_t (line 7) | typedef uint16_t ogg_uint16_t;
type ogg_int32_t (line 8) | typedef int32_t ogg_int32_t;
type ogg_uint32_t (line 9) | typedef uint32_t ogg_uint32_t;
type ogg_int64_t (line 10) | typedef int64_t ogg_int64_t;
type ogg_uint64_t (line 11) | typedef uint64_t ogg_uint64_t;
FILE: arch/android/project/app/src/main/java/net/digitalmzx/megazeux/GameActivity.java
class GameActivity (line 31) | public class GameActivity extends SDLActivity
method getAssetPath (line 33) | static File getAssetPath(Activity activity)
method getArguments (line 52) | @Override
FILE: arch/android/project/app/src/main/java/net/digitalmzx/megazeux/MainActivity.java
class MainActivity (line 41) | public class MainActivity extends Activity
method onCreate (line 45) | @Override
method onActivityResult (line 83) | @Override
method launchGame (line 96) | private void launchGame()
method onRequestPermissionsResult (line 185) | @Override
FILE: arch/android/project/app/src/main/java/org/libsdl/app/HIDDevice.java
type HIDDevice (line 5) | interface HIDDevice
method getId (line 7) | public int getId();
method getVendorId (line 8) | public int getVendorId();
method getProductId (line 9) | public int getProductId();
method getSerialNumber (line 10) | public String getSerialNumber();
method getVersion (line 11) | public int getVersion();
method getManufacturerName (line 12) | public String getManufacturerName();
method getProductName (line 13) | public String getProductName();
method getDevice (line 14) | public UsbDevice getDevice();
method open (line 15) | public boolean open();
method sendFeatureReport (line 16) | public int sendFeatureReport(byte[] report);
method sendOutputReport (line 17) | public int sendOutputReport(byte[] report);
method getFeatureReport (line 18) | public boolean getFeatureReport(byte[] report);
method setFrozen (line 19) | public void setFrozen(boolean frozen);
method close (line 20) | public void close();
method shutdown (line 21) | public void shutdown();
FILE: arch/android/project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java
class HIDDeviceBLESteamController (line 25) | class HIDDeviceBLESteamController extends BluetoothGattCallback implemen...
class GattOperation (line 52) | static class GattOperation {
type Operation (line 53) | private enum Operation {
method GattOperation (line 65) | private GattOperation(BluetoothGatt gatt, GattOperation.Operation op...
method GattOperation (line 71) | private GattOperation(BluetoothGatt gatt, GattOperation.Operation op...
method run (line 78) | public void run() {
method finish (line 135) | public boolean finish() {
method getCharacteristic (line 139) | private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
method readCharacteristic (line 146) | static public GattOperation readCharacteristic(BluetoothGatt gatt, U...
method writeCharacteristic (line 150) | static public GattOperation writeCharacteristic(BluetoothGatt gatt, ...
method enableNotification (line 154) | static public GattOperation enableNotification(BluetoothGatt gatt, U...
method HIDDeviceBLESteamController (line 159) | public HIDDeviceBLESteamController(HIDDeviceManager manager, Bluetooth...
method getIdentifier (line 178) | public String getIdentifier() {
method getGatt (line 182) | public BluetoothGatt getGatt() {
method connectGatt (line 188) | private BluetoothGatt connectGatt(boolean managed) {
method connectGatt (line 200) | private BluetoothGatt connectGatt() {
method getConnectionState (line 204) | protected int getConnectionState() {
method reconnect (line 222) | public void reconnect() {
method checkConnectionForChromebookIssue (line 231) | protected void checkConnectionForChromebookIssue() {
method isRegistered (line 292) | private boolean isRegistered() {
method setRegistered (line 296) | private void setRegistered() {
method probeService (line 300) | private boolean probeService(HIDDeviceBLESteamController controller) {
method finishCurrentGattOperation (line 345) | private void finishCurrentGattOperation() {
method executeNextGattOperation (line 364) | private void executeNextGattOperation() {
method queueGattOperation (line 392) | private void queueGattOperation(GattOperation op) {
method enableNotification (line 399) | private void enableNotification(UUID chrUuid) {
method writeCharacteristic (line 404) | public void writeCharacteristic(UUID uuid, byte[] value) {
method readCharacteristic (line 409) | public void readCharacteristic(UUID uuid) {
method onConnectionStateChange (line 418) | public void onConnectionStateChange(BluetoothGatt g, int status, int n...
method onServicesDiscovered (line 440) | public void onServicesDiscovered(BluetoothGatt gatt, int status) {
method onCharacteristicRead (line 456) | public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattChar...
method onCharacteristicWrite (line 466) | public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCha...
method onCharacteristicChanged (line 481) | public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattC...
method onDescriptorRead (line 490) | public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescript...
method onDescriptorWrite (line 494) | public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescrip...
method onReliableWriteCompleted (line 511) | public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {
method onReadRemoteRssi (line 515) | public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
method onMtuChanged (line 519) | public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
method getId (line 527) | @Override
method getVendorId (line 532) | @Override
method getProductId (line 539) | @Override
method getSerialNumber (line 546) | @Override
method getVersion (line 552) | @Override
method getManufacturerName (line 557) | @Override
method getProductName (line 562) | @Override
method getDevice (line 567) | @Override
method open (line 572) | @Override
method sendFeatureReport (line 577) | @Override
method sendOutputReport (line 594) | @Override
method getFeatureReport (line 609) | @Override
method close (line 624) | @Override
method setFrozen (line 628) | @Override
method shutdown (line 633) | @Override
FILE: arch/android/project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java
class HIDDeviceManager (line 28) | public class HIDDeviceManager {
method acquire (line 35) | public static HIDDeviceManager acquire(Context context) {
method release (line 43) | public static void release(HIDDeviceManager manager) {
method onReceive (line 65) | @Override
method onReceive (line 82) | @Override
method HIDDeviceManager (line 105) | private HIDDeviceManager(final Context context) {
method getContext (line 124) | public Context getContext() {
method getDeviceIDForIdentifier (line 128) | public int getDeviceIDForIdentifier(String identifier) {
method initializeUSB (line 142) | private void initializeUSB() {
method getUSBManager (line 203) | UsbManager getUSBManager() {
method shutdownUSB (line 207) | private void shutdownUSB() {
method isHIDDeviceInterface (line 215) | private boolean isHIDDeviceInterface(UsbDevice usbDevice, UsbInterface...
method isXbox360Controller (line 225) | private boolean isXbox360Controller(UsbDevice usbDevice, UsbInterface ...
method isXboxOneController (line 272) | private boolean isXboxOneController(UsbDevice usbDevice, UsbInterface ...
method handleUsbDeviceAttached (line 306) | private void handleUsbDeviceAttached(UsbDevice usbDevice) {
method handleUsbDeviceDetached (line 310) | private void handleUsbDeviceDetached(UsbDevice usbDevice) {
method handleUsbDevicePermission (line 325) | private void handleUsbDevicePermission(UsbDevice usbDevice, boolean pe...
method connectHIDDeviceUSB (line 337) | private void connectHIDDeviceUSB(UsbDevice usbDevice) {
method initializeBluetooth (line 360) | private void initializeBluetooth() {
method shutdownBluetooth (line 423) | private void shutdownBluetooth() {
method chromebookConnectionHandler (line 434) | public void chromebookConnectionHandler() {
method connectBluetoothDevice (line 473) | public boolean connectBluetoothDevice(BluetoothDevice bluetoothDevice) {
method disconnectBluetoothDevice (line 494) | public void disconnectBluetoothDevice(BluetoothDevice bluetoothDevice) {
method isSteamController (line 508) | public boolean isSteamController(BluetoothDevice bluetoothDevice) {
method close (line 522) | private void close() {
method setFrozen (line 535) | public void setFrozen(boolean frozen) {
method getDevice (line 547) | private HIDDevice getDevice(int id) {
method initialize (line 562) | public boolean initialize(boolean usb, boolean bluetooth) {
method openDevice (line 574) | public boolean openDevice(int deviceID) {
method sendOutputReport (line 616) | public int sendOutputReport(int deviceID, byte[] report) {
method sendFeatureReport (line 633) | public int sendFeatureReport(int deviceID, byte[] report) {
method getFeatureReport (line 650) | public boolean getFeatureReport(int deviceID, byte[] report) {
method closeDevice (line 667) | public void closeDevice(int deviceID) {
method HIDDeviceRegisterCallback (line 688) | private native void HIDDeviceRegisterCallback();
method HIDDeviceReleaseCallback (line 689) | private native void HIDDeviceReleaseCallback();
method HIDDeviceConnected (line 691) | native void HIDDeviceConnected(int deviceID, String identifier, int ve...
method HIDDeviceOpenPending (line 692) | native void HIDDeviceOpenPending(int deviceID);
method HIDDeviceOpenResult (line 693) | native void HIDDeviceOpenResult(int deviceID, boolean opened);
method HIDDeviceDisconnected (line 694) | native void HIDDeviceDisconnected(int deviceID);
method HIDDeviceInputReport (line 696) | native void HIDDeviceInputReport(int deviceID, byte[] report);
method HIDDeviceFeatureReport (line 697) | native void HIDDeviceFeatureReport(int deviceID, byte[] report);
FILE: arch/android/project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java
class HIDDeviceUSB (line 8) | class HIDDeviceUSB implements HIDDevice {
method HIDDeviceUSB (line 24) | public HIDDeviceUSB(HIDDeviceManager manager, UsbDevice usbDevice, int...
method getIdentifier (line 33) | public String getIdentifier() {
method getId (line 37) | @Override
method getVendorId (line 42) | @Override
method getProductId (line 47) | @Override
method getSerialNumber (line 52) | @Override
method getVersion (line 69) | @Override
method getManufacturerName (line 74) | @Override
method getProductName (line 86) | @Override
method getDevice (line 98) | @Override
method getDeviceName (line 103) | public String getDeviceName() {
method open (line 107) | @Override
method sendFeatureReport (line 155) | @Override
method sendOutputReport (line 188) | @Override
method getFeatureReport (line 197) | @Override
method close (line 242) | @Override
method shutdown (line 264) | @Override
method setFrozen (line 270) | @Override
class InputThread (line 275) | protected class InputThread extends Thread {
method run (line 276) | @Override
FILE: arch/android/project/app/src/main/java/org/libsdl/app/SDL.java
class SDL (line 11) | public class SDL {
method setupJNI (line 15) | public static void setupJNI() {
method initialize (line 22) | public static void initialize() {
method setContext (line 31) | public static void setContext(Context context) {
method getContext (line 36) | public static Context getContext() {
method loadLibrary (line 40) | public static void loadLibrary(String libraryName) throws UnsatisfiedL...
method loadLibrary (line 44) | public static void loadLibrary(String libraryName, Context context) th...
FILE: arch/android/project/app/src/main/java/org/libsdl/app/SDLActivity.java
class SDLActivity (line 60) | public class SDLActivity extends Activity implements View.OnSystemUiVisi...
type NativeState (line 200) | public enum NativeState {
method getMotionListener (line 225) | protected static SDLGenericMotionListener_API12 getMotionListener() {
method getMainSharedObject (line 243) | protected String getMainSharedObject() {
method getMainFunction (line 258) | protected String getMainFunction() {
method getLibraries (line 270) | protected String[] getLibraries() {
method loadLibraries (line 282) | public void loadLibraries() {
method getArguments (line 294) | protected String[] getArguments() {
method initialize (line 298) | public static void initialize() {
method createSDLSurface (line 315) | protected SDLSurface createSDLSurface(Context context) {
method onCreate (line 320) | @Override
method pauseNativeThread (line 432) | protected void pauseNativeThread() {
method resumeNativeThread (line 443) | protected void resumeNativeThread() {
method onPause (line 455) | @Override
method onResume (line 468) | @Override
method onStop (line 481) | @Override
method onStart (line 490) | @Override
method getCurrentOrientation (line 499) | public static int getCurrentOrientation() {
method onWindowFocusChanged (line 529) | @Override
method onLowMemory (line 555) | @Override
method onConfigurationChanged (line 567) | @Override
method onDestroy (line 582) | @Override
method onBackPressed (line 616) | @Override
method manualBackButton (line 636) | public static void manualBackButton() {
method pressBackButton (line 641) | public void pressBackButton() {
method superOnBackPressed (line 653) | public void superOnBackPressed() {
method dispatchKeyEvent (line 657) | @Override
method handleNativeState (line 678) | public static void handleNativeState() {
method onUnhandledMessage (line 745) | protected boolean onUnhandledMessage(int command, Object param) {
class SDLCommandHandler (line 754) | protected static class SDLCommandHandler extends Handler {
method handleMessage (line 755) | @Override
method sendCommand (line 840) | boolean sendCommand(int command, Object data) {
method nativeGetVersion (line 902) | public static native String nativeGetVersion();
method nativeSetupJNI (line 903) | public static native int nativeSetupJNI();
method nativeRunMain (line 904) | public static native int nativeRunMain(String library, String function...
method nativeLowMemory (line 905) | public static native void nativeLowMemory();
method nativeSendQuit (line 906) | public static native void nativeSendQuit();
method nativeQuit (line 907) | public static native void nativeQuit();
method nativePause (line 908) | public static native void nativePause();
method nativeResume (line 909) | public static native void nativeResume();
method nativeFocusChanged (line 910) | public static native void nativeFocusChanged(boolean hasFocus);
method onNativeDropFile (line 911) | public static native void onNativeDropFile(String filename);
method nativeSetScreenResolution (line 912) | public static native void nativeSetScreenResolution(int surfaceWidth, ...
method onNativeResize (line 913) | public static native void onNativeResize();
method onNativeKeyDown (line 914) | public static native void onNativeKeyDown(int keycode);
method onNativeKeyUp (line 915) | public static native void onNativeKeyUp(int keycode);
method onNativeSoftReturnKey (line 916) | public static native boolean onNativeSoftReturnKey();
method onNativeKeyboardFocusLost (line 917) | public static native void onNativeKeyboardFocusLost();
method onNativeMouse (line 918) | public static native void onNativeMouse(int button, int action, float ...
method onNativeTouch (line 919) | public static native void onNativeTouch(int touchDevId, int pointerFin...
method onNativeAccel (line 922) | public static native void onNativeAccel(float x, float y, float z);
method onNativeClipboardChanged (line 923) | public static native void onNativeClipboardChanged();
method onNativeSurfaceCreated (line 924) | public static native void onNativeSurfaceCreated();
method onNativeSurfaceChanged (line 925) | public static native void onNativeSurfaceChanged();
method onNativeSurfaceDestroyed (line 926) | public static native void onNativeSurfaceDestroyed();
method nativeGetHint (line 927) | public static native String nativeGetHint(String name);
method nativeGetHintBoolean (line 928) | public static native boolean nativeGetHintBoolean(String name, boolean...
method nativeSetenv (line 929) | public static native void nativeSetenv(String name, String value);
method onNativeOrientationChanged (line 930) | public static native void onNativeOrientationChanged(int orientation);
method nativeAddTouch (line 931) | public static native void nativeAddTouch(int touchId, String name);
method nativePermissionResult (line 932) | public static native void nativePermissionResult(int requestCode, bool...
method onNativeLocaleChanged (line 933) | public static native void onNativeLocaleChanged();
method setActivityTitle (line 938) | public static boolean setActivityTitle(String title) {
method setWindowStyle (line 946) | public static void setWindowStyle(boolean fullscreen) {
method setOrientation (line 956) | public static void setOrientation(int w, int h, boolean resizable, Str...
method setOrientationBis (line 966) | public void setOrientationBis(int w, int h, boolean resizable, String ...
method minimizeWindow (line 1032) | public static void minimizeWindow() {
method shouldMinimizeOnFocusLoss (line 1047) | public static boolean shouldMinimizeOnFocusLoss() {
method isScreenKeyboardShown (line 1071) | public static boolean isScreenKeyboardShown()
method supportsRelativeMouse (line 1089) | public static boolean supportsRelativeMouse()
method setRelativeMouseEnabled (line 1108) | public static boolean setRelativeMouseEnabled(boolean enabled)
method sendMessage (line 1120) | public static boolean sendMessage(int command, int param) {
method getContext (line 1130) | public static Context getContext() {
method isAndroidTV (line 1137) | public static boolean isAndroidTV() {
method getDiagonal (line 1151) | public static double getDiagonal()
method isTablet (line 1169) | public static boolean isTablet() {
method isChromebook (line 1177) | public static boolean isChromebook() {
method isDeXMode (line 1187) | public static boolean isDeXMode() {
method getDisplayDPI (line 1204) | public static DisplayMetrics getDisplayDPI() {
method getManifestEnvironmentVariables (line 1211) | public static boolean getManifestEnvironmentVariables() {
method getContentView (line 1240) | public static View getContentView() {
class ShowTextInputTask (line 1244) | static class ShowTextInputTask implements Runnable {
method ShowTextInputTask (line 1254) | public ShowTextInputTask(int x, int y, int w, int h) {
method run (line 1269) | @Override
method showTextInput (line 1296) | public static boolean showTextInput(int x, int y, int w, int h) {
method isTextInputEvent (line 1301) | public static boolean isTextInputEvent(KeyEvent event) {
method handleKeyEvent (line 1311) | public static boolean handleKeyEvent(View v, int keyCode, KeyEvent eve...
method getNativeSurface (line 1383) | public static Surface getNativeSurface() {
method initTouch (line 1395) | public static void initTouch() {
method messageboxShowMessageBox (line 1434) | public int messageboxShowMessageBox(
method messageboxCreateAndShow (line 1487) | protected void messageboxCreateAndShow(Bundle args) {
method run (line 1621) | @Override
method onSystemUiVisibilityChange (line 1636) | public void onSystemUiVisibilityChange(int visibility) {
method clipboardHasText (line 1651) | public static boolean clipboardHasText() {
method clipboardGetText (line 1658) | public static String clipboardGetText() {
method clipboardSetText (line 1665) | public static void clipboardSetText(String string) {
method createCustomCursor (line 1672) | public static int createCustomCursor(int[] colors, int width, int heig...
method destroyCustomCursor (line 1691) | public static void destroyCustomCursor(int cursorID) {
method setCustomCursor (line 1704) | public static boolean setCustomCursor(int cursorID) {
method setSystemCursor (line 1721) | public static boolean setSystemCursor(int cursorID) {
method requestPermission (line 1774) | public static void requestPermission(String permission, int requestCod...
method onRequestPermissionsResult (line 1788) | @Override
method openURL (line 1797) | public static int openURL(String url)
method showToast (line 1821) | public static int showToast(String message, int duration, int gravity,...
class SDLMain (line 1868) | class SDLMain implements Runnable {
method run (line 1869) | @Override
class DummyEdit (line 1900) | class DummyEdit extends View implements View.OnKeyListener {
method DummyEdit (line 1903) | public DummyEdit(Context context) {
method onCheckIsTextEditor (line 1910) | @Override
method onKey (line 1915) | @Override
method onKeyPreIme (line 1921) | @Override
method onCreateInputConnection (line 1937) | @Override
class SDLInputConnection (line 1950) | class SDLInputConnection extends BaseInputConnection {
method SDLInputConnection (line 1955) | public SDLInputConnection(View targetView, boolean fullEditor) {
method getEditable (line 1960) | @Override
method sendKeyEvent (line 1965) | @Override
method commitText (line 1988) | @Override
method setComposingText (line 1997) | @Override
method deleteSurroundingText (line 2006) | @Override
method updateText (line 2027) | protected void updateText() {
method nativeCommitText (line 2072) | public static native void nativeCommitText(String text, int newCursorP...
method nativeGenerateScancodeForUnichar (line 2074) | public static native void nativeGenerateScancodeForUnichar(char c);
class SDLClipboardHandler (line 2077) | class SDLClipboardHandler implements
method SDLClipboardHandler (line 2082) | SDLClipboardHandler() {
method clipboardHasText (line 2087) | public boolean clipboardHasText() {
method clipboardGetText (line 2091) | public String clipboardGetText() {
method clipboardSetText (line 2105) | public void clipboardSetText(String string) {
method onPrimaryClipChanged (line 2112) | @Override
FILE: arch/android/project/app/src/main/java/org/libsdl/app/SDLAudioManager.java
class SDLAudioManager (line 16) | public class SDLAudioManager {
method initialize (line 27) | public static void initialize() {
method setContext (line 52) | public static void setContext(Context context) {
method release (line 59) | public static void release(Context context) {
method getAudioFormatString (line 65) | protected static String getAudioFormatString(int audioFormat) {
method open (line 78) | protected static int[] open(boolean isCapture, int sampleRate, int aud...
method getInputAudioDeviceInfo (line 289) | private static AudioDeviceInfo getInputAudioDeviceInfo(int deviceId) {
method getOutputAudioDeviceInfo (line 303) | private static AudioDeviceInfo getOutputAudioDeviceInfo(int deviceId) {
method registerAudioDeviceCallback (line 317) | private static void registerAudioDeviceCallback() {
method unregisterAudioDeviceCallback (line 324) | private static void unregisterAudioDeviceCallback(Context context) {
method getAudioOutputDevices (line 334) | public static int[] getAudioOutputDevices() {
method getAudioInputDevices (line 351) | public static int[] getAudioInputDevices() {
method audioOpen (line 368) | public static int[] audioOpen(int sampleRate, int audioFormat, int des...
method audioWriteFloatBuffer (line 375) | public static void audioWriteFloatBuffer(float[] buffer) {
method audioWriteShortBuffer (line 406) | public static void audioWriteShortBuffer(short[] buffer) {
method audioWriteByteBuffer (line 432) | public static void audioWriteByteBuffer(byte[] buffer) {
method captureOpen (line 458) | public static int[] captureOpen(int sampleRate, int audioFormat, int d...
method captureReadFloatBuffer (line 463) | public static int captureReadFloatBuffer(float[] buffer, boolean block...
method captureReadShortBuffer (line 472) | public static int captureReadShortBuffer(short[] buffer, boolean block...
method captureReadByteBuffer (line 481) | public static int captureReadByteBuffer(byte[] buffer, boolean blockin...
method audioClose (line 490) | public static void audioClose() {
method captureClose (line 499) | public static void captureClose() {
method audioSetThreadPriority (line 508) | public static void audioSetThreadPriority(boolean iscapture, int devic...
method nativeSetupJNI (line 526) | public static native int nativeSetupJNI();
method removeAudioDevice (line 528) | public static native void removeAudioDevice(boolean isCapture, int dev...
method addAudioDevice (line 530) | public static native void addAudioDevice(boolean isCapture, int device...
FILE: arch/android/project/app/src/main/java/org/libsdl/app/SDLControllerManager.java
class SDLControllerManager (line 19) | public class SDLControllerManager
method nativeSetupJNI (line 22) | public static native int nativeSetupJNI();
method nativeAddJoystick (line 24) | public static native int nativeAddJoystick(int device_id, String name,...
method nativeRemoveJoystick (line 28) | public static native int nativeRemoveJoystick(int device_id);
method nativeAddHaptic (line 29) | public static native int nativeAddHaptic(int device_id, String name);
method nativeRemoveHaptic (line 30) | public static native int nativeRemoveHaptic(int device_id);
method onNativePadDown (line 31) | public static native int onNativePadDown(int device_id, int keycode);
method onNativePadUp (line 32) | public static native int onNativePadUp(int device_id, int keycode);
method onNativeJoy (line 33) | public static native void onNativeJoy(int device_id, int axis,
method onNativeHat (line 35) | public static native void onNativeHat(int device_id, int hat_id,
method initialize (line 43) | public static void initialize() {
method handleJoystickMotionEvent (line 62) | public static boolean handleJoystickMotionEvent(MotionEvent event) {
method pollInputDevices (line 69) | public static void pollInputDevices() {
method pollHapticDevices (line 76) | public static void pollHapticDevices() {
method hapticRun (line 83) | public static void hapticRun(int device_id, float intensity, int lengt...
method hapticStop (line 90) | public static void hapticStop(int device_id)
method isDeviceSDLJoystick (line 96) | public static boolean isDeviceSDLJoystick(int deviceId) {
class SDLJoystickHandler (line 126) | class SDLJoystickHandler {
method handleMotionEvent (line 133) | public boolean handleMotionEvent(MotionEvent event) {
method pollInputDevices (line 140) | public void pollInputDevices() {
class SDLJoystickHandler_API16 (line 145) | class SDLJoystickHandler_API16 extends SDLJoystickHandler {
class SDLJoystick (line 147) | static class SDLJoystick {
class RangeComparator (line 154) | static class RangeComparator implements Comparator<InputDevice.MotionR...
method compare (line 155) | @Override
method SDLJoystickHandler_API16 (line 203) | public SDLJoystickHandler_API16() {
method pollInputDevices (line 208) | @Override
method getJoystick (line 273) | protected SDLJoystick getJoystick(int device_id) {
method handleMotionEvent (line 282) | @Override
method getJoystickDescriptor (line 305) | public String getJoystickDescriptor(InputDevice joystickDevice) {
method getProductId (line 314) | public int getProductId(InputDevice joystickDevice) {
method getVendorId (line 317) | public int getVendorId(InputDevice joystickDevice) {
method getAxisMask (line 320) | public int getAxisMask(List<InputDevice.MotionRange> ranges) {
method getButtonMask (line 323) | public int getButtonMask(InputDevice joystickDevice) {
class SDLJoystickHandler_API19 (line 328) | class SDLJoystickHandler_API19 extends SDLJoystickHandler_API16 {
method getProductId (line 330) | @Override
method getVendorId (line 335) | @Override
method getAxisMask (line 340) | @Override
method getButtonMask (line 377) | @Override
class SDLHapticHandler_API26 (line 473) | class SDLHapticHandler_API26 extends SDLHapticHandler {
method run (line 474) | @Override
class SDLHapticHandler (line 505) | class SDLHapticHandler {
class SDLHaptic (line 507) | static class SDLHaptic {
method SDLHapticHandler (line 515) | public SDLHapticHandler() {
method run (line 519) | public void run(int device_id, float intensity, int length) {
method stop (line 526) | public void stop(int device_id) {
method pollHapticDevices (line 533) | public void pollHapticDevices() {
method getHaptic (line 612) | protected SDLHaptic getHaptic(int device_id) {
class SDLGenericMotionListener_API12 (line 622) | class SDLGenericMotionListener_API12 implements View.OnGenericMotionList...
method onGenericMotion (line 624) | @Override
method supportsRelativeMouse (line 662) | public boolean supportsRelativeMouse() {
method inRelativeMode (line 666) | public boolean inRelativeMode() {
method setRelativeMouseEnabled (line 670) | public boolean setRelativeMouseEnabled(boolean enabled) {
method reclaimRelativeMouseModeIfNeeded (line 674) | public void reclaimRelativeMouseModeIfNeeded()
method getEventX (line 679) | public float getEventX(MotionEvent event) {
method getEventY (line 683) | public float getEventY(MotionEvent event) {
class SDLGenericMotionListener_API24 (line 689) | class SDLGenericMotionListener_API24 extends SDLGenericMotionListener_AP...
method onGenericMotion (line 694) | @Override
method supportsRelativeMouse (line 714) | @Override
method inRelativeMode (line 719) | @Override
method setRelativeMouseEnabled (line 724) | @Override
method getEventX (line 730) | @Override
method getEventY (line 739) | @Override
class SDLGenericMotionListener_API26 (line 749) | class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_AP...
method onGenericMotion (line 753) | @Override
method supportsRelativeMouse (line 812) | @Override
method inRelativeMode (line 817) | @Override
method setRelativeMouseEnabled (line 822) | @Override
method reclaimRelativeMouseModeIfNeeded (line 837) | @Override
method getEventX (line 845) | @Override
method getEventY (line 851) | @Override
FILE: arch/android/project/app/src/main/java/org/libsdl/app/SDLSurface.java
class SDLSurface (line 30) | public class SDLSurface extends SurfaceView implements SurfaceHolder.Cal...
method SDLSurface (line 44) | public SDLSurface(Context context) {
method handlePause (line 66) | public void handlePause() {
method handleResume (line 70) | public void handleResume() {
method getNativeSurface (line 79) | public Surface getNativeSurface() {
method surfaceCreated (line 84) | @Override
method surfaceDestroyed (line 91) | @Override
method surfaceChanged (line 104) | @Override
method onKey (line 191) | @Override
method onTouch (line 197) | @Override
method enableSensor (line 302) | public void enableSensor(int sensortype, boolean enabled) {
method onAccuracyChanged (line 314) | @Override
method onSensorChanged (line 319) | @Override
method onCapturedPointerEvent (line 366) | public boolean onCapturedPointerEvent(MotionEvent event)
FILE: arch/djgpp/audio.c
type sb_config (line 41) | struct sb_config
type sb_config (line 68) | struct sb_config
function audio_sb_clear_buffer (line 70) | static void audio_sb_clear_buffer(void)
function audio_sb_fill_block (line 82) | static void audio_sb_fill_block(void)
function audio_sb_next_block (line 96) | static void audio_sb_next_block(void)
function audio_sb_interrupt (line 102) | static void audio_sb_interrupt(void)
function audio_sb_parse_env (line 114) | static void audio_sb_parse_env(struct sb_config *conf, char *env)
function audio_sb_dsp_read (line 141) | static uint8_t audio_sb_dsp_read(void)
function audio_sb_dsp_write (line 151) | static void audio_sb_dsp_write(uint8_t val)
function boolean (line 161) | static boolean audio_sb_dsp_reset(void)
function audio_sb_mixer_set_stereo (line 178) | static void audio_sb_mixer_set_stereo(boolean enable)
function init_audio_platform (line 191) | void init_audio_platform(struct config_info *conf)
function quit_audio_platform (line 391) | void quit_audio_platform(void)
FILE: arch/djgpp/event.c
type input_status (line 30) | struct input_status
function read_kbd (line 48) | static int read_kbd(void)
type keycode (line 57) | enum keycode
type keycode (line 90) | enum keycode
function convert_ext_internal (line 124) | static enum keycode convert_ext_internal(uint8_t key)
function extbioskey (line 132) | static int extbioskey(int cmd)
function update_lock_status (line 154) | static void update_lock_status(struct buffered_status *status)
function convert_bios_xt (line 162) | static uint8_t convert_bios_xt(uint8_t key)
function poll_keyboard_bios (line 251) | static void poll_keyboard_bios(void)
function convert_ext_unicode (line 268) | static uint16_t convert_ext_unicode(uint8_t key)
function get_keystat (line 274) | static int get_keystat(int key)
function set_keystat (line 279) | static void set_keystat(int key, int stat)
function boolean (line 284) | static boolean non_bios_key(uint8_t key)
function boolean (line 311) | static boolean process_keypress(int key)
function boolean (line 375) | static boolean process_keyrelease(int key)
function boolean (line 402) | static boolean process_key(int key)
type mouse_event (line 425) | struct mouse_event
type mouse_event (line 435) | struct mouse_event
function boolean (line 438) | static boolean read_mouse(struct mouse_event *mev)
function boolean (line 446) | static boolean process_mouse(struct mouse_event *mev)
function boolean (line 514) | boolean __update_event_status(void)
function __wait_event (line 528) | void __wait_event(void)
function __warp_mouse (line 544) | void __warp_mouse(int x, int y)
function boolean (line 549) | boolean __peek_exit_input(void)
function boolean (line 555) | boolean platform_has_screen_keyboard(void)
function boolean (line 560) | boolean platform_show_screen_keyboard(void)
function boolean (line 565) | boolean platform_hide_screen_keyboard(void)
function boolean (line 570) | boolean platform_is_screen_keyboard_active(void)
function init_kbd (line 575) | static void init_kbd(void)
function init_mouse (line 585) | static void init_mouse(void)
function platform_init_event (line 608) | void platform_init_event(void)
FILE: arch/djgpp/platform.c
function boolean (line 46) | boolean djgpp_push_enable_nearptr(void)
function boolean (line 56) | boolean djgpp_pop_enable_nearptr(void)
function djgpp_display_adapter_detect (line 66) | int djgpp_display_adapter_detect(void)
function djgpp_malloc_boundary (line 139) | int djgpp_malloc_boundary(int len_bytes, int boundary_bytes, int *selector)
function djgpp_enable_dma16 (line 149) | static void djgpp_enable_dma16(uint8_t port, uint8_t mode, int offset, i...
function djgpp_enable_dma8 (line 174) | static void djgpp_enable_dma8(uint8_t port, uint8_t mode, int offset, in...
function djgpp_enable_dma (line 201) | void djgpp_enable_dma(uint8_t port, uint8_t mode, int offset, int bytes)
function djgpp_disable_dma (line 209) | void djgpp_disable_dma(uint8_t port)
function djgpp_irq_enable (line 217) | void djgpp_irq_enable(int irq, struct irq_state *old_state)
function djgpp_irq_restore (line 231) | void djgpp_irq_restore(struct irq_state *old_state)
function djgpp_irq_ack (line 238) | void djgpp_irq_ack(int irq)
function djgpp_irq_vector (line 245) | int djgpp_irq_vector(int irq)
function delay (line 274) | void delay(uint32_t ms)
function get_ticks (line 284) | uint64_t get_ticks(void)
function set_timer (line 289) | static void set_timer(uint32_t count)
function fix_timezone (line 296) | static void fix_timezone(void)
function boolean (line 304) | boolean platform_init(void)
function platform_quit (line 357) | void platform_quit(void)
FILE: arch/djgpp/platform_djgpp.h
type vbe_info (line 42) | struct vbe_info
type vbe_mode_info (line 56) | struct vbe_mode_info
type irq_state (line 91) | struct irq_state
type irq_state (line 105) | struct irq_state
type irq_state (line 106) | struct irq_state
function djgpp_save_x87 (line 119) | static inline void djgpp_save_x87(uint8_t fpustate[108])
function djgpp_restore_x87 (line 123) | static inline void djgpp_restore_x87(const uint8_t fpustate[108])
FILE: arch/djgpp/render_ega.c
type ega_render_data (line 68) | struct ega_render_data
function ega_set_14p (line 83) | static void ega_set_14p(void)
function ega_set_page (line 91) | static void ega_set_page(int page)
function ega_set_smzx (line 98) | static void ega_set_smzx(boolean is_ati)
function ega_set_16p (line 120) | static void ega_set_16p(void)
function ega_blink_on (line 128) | static void ega_blink_on(void)
function ega_blink_off (line 136) | static void ega_blink_off(void)
function ega_cursor_off (line 144) | static void ega_cursor_off(void)
function ega_set_cursor_shape (line 152) | static void ega_set_cursor_shape(uint8_t lines, uint8_t offset)
function ega_set_cursor_pos (line 166) | static void ega_set_cursor_pos(int page, uint32_t x, uint32_t y)
function ega_get_mode (line 176) | static unsigned char ega_get_mode(void)
function ega_set_mode (line 185) | static void ega_set_mode(unsigned char mode)
function ega_bank_char (line 193) | static void ega_bank_char(void)
function ega_bank_text (line 207) | static void ega_bank_text(void)
function ega_vsync (line 221) | static void ega_vsync(void)
function boolean (line 229) | static boolean ega_is_ati_card(void)
function boolean (line 237) | static boolean ega_init_video(struct graphics_data *graphics,
function ega_free_video (line 283) | static void ega_free_video(struct graphics_data *graphics)
function boolean (line 294) | static boolean ega_set_screen_mode(struct graphics_data *graphics, unsig...
function boolean (line 337) | static boolean ega_create_window(struct graphics_data *graphics,
function ega_remap_char_range (line 344) | static void ega_remap_char_range(struct graphics_data *graphics, uint16_...
function ega_remap_char (line 350) | static void ega_remap_char(struct graphics_data *graphics, uint16_t chr)
function ega_remap_charbyte (line 356) | static void ega_remap_charbyte(struct graphics_data *graphics, uint16_t ...
function ega_update_colors (line 363) | static void ega_update_colors(struct graphics_data *graphics,
function ega_render_graph (line 417) | static void ega_render_graph(struct graphics_data *graphics)
function ega_hardware_cursor (line 433) | static void ega_hardware_cursor(struct graphics_data *graphics,
function ega_render_mouse (line 474) | static void ega_render_mouse(struct graphics_data *graphics,
function ega_sync_screen (line 485) | static void ega_sync_screen(struct graphics_data *graphics,
function render_ega_register (line 507) | void render_ega_register(struct renderer *renderer)
FILE: arch/djgpp/render_svga.c
type svga_render_data (line 39) | struct svga_render_data
function boolean (line 50) | static boolean svga_try_mode(struct graphics_data *graphics, uint16_t mode,
function boolean (line 71) | static boolean svga_try_modes(struct graphics_data *graphics)
function boolean (line 92) | static boolean svga_init_video(struct graphics_data *graphics,
function svga_free_video (line 174) | static void svga_free_video(struct graphics_data *graphics)
function boolean (line 181) | static boolean svga_create_window(struct graphics_data *graphics,
function svga_upload_colors (line 187) | static void svga_upload_colors(uint32_t *palette, uint32_t count)
function svga_update_colors (line 214) | static void svga_update_colors(struct graphics_data *graphics,
function svga_render_graph (line 243) | static void svga_render_graph(struct graphics_data *graphics)
function svga_render_layer (line 260) | static void svga_render_layer(struct graphics_data *graphics,
function svga_render_cursor (line 268) | static void svga_render_cursor(struct graphics_data *graphics, unsigned ...
function svga_render_mouse (line 287) | static void svga_render_mouse(struct graphics_data *graphics,
function svga_sync_screen (line 302) | static void svga_sync_screen(struct graphics_data *graphics,
function render_svga_register (line 340) | void render_svga_register(struct renderer *renderer)
FILE: arch/djgpp/thread.h
type platform_mutex (line 37) | typedef int platform_mutex;
type platform_thread_id (line 38) | typedef int platform_thread_id;
function platform_mutex_init (line 40) | static inline void platform_mutex_init(platform_mutex *mutex)
function platform_mutex_destroy (line 45) | static inline void platform_mutex_destroy(platform_mutex *mutex)
function boolean (line 50) | static inline boolean platform_mutex_lock(platform_mutex *mutex)
function boolean (line 56) | static inline boolean platform_mutex_unlock(platform_mutex *mutex)
function platform_thread_id (line 66) | static inline platform_thread_id platform_get_thread_id(void)
function boolean (line 71) | static inline boolean platform_is_same_thread(platform_thread_id a,
FILE: arch/dreamcast/audio.c
function init_audio_platform (line 75) | void init_audio_platform(struct config_info *conf)
function quit_audio_platform (line 88) | void quit_audio_platform(void)
FILE: arch/dreamcast/event.c
type input_status (line 27) | struct input_status
function platform_init_event (line 29) | void platform_init_event(void)
function boolean (line 33) | boolean platform_has_screen_keyboard(void)
function boolean (line 38) | boolean platform_show_screen_keyboard(void)
function boolean (line 43) | boolean platform_hide_screen_keyboard(void)
function boolean (line 48) | boolean platform_is_screen_keyboard_active(void)
function __warp_mouse (line 53) | void __warp_mouse(int x, int y)
function boolean (line 59) | boolean __update_event_status(void)
function boolean (line 66) | boolean __peek_exit_input(void)
function __wait_event (line 72) | void __wait_event(void)
function boolean (line 78) | static inline boolean check_hat(struct buffered_status *status,
function boolean (line 97) | static inline boolean check_joy(struct buffered_status *status,
function boolean (line 122) | boolean dc_update_input(void)
FILE: arch/dreamcast/platform.c
function delay (line 34) | void delay(uint32_t ms)
function get_ticks (line 39) | uint64_t get_ticks(void)
function boolean (line 44) | boolean platform_init(void)
function platform_quit (line 49) | void platform_quit(void)
function main (line 53) | int main(int argc, char *argv[])
FILE: arch/dreamcast/render.c
type dc_render_data (line 37) | struct dc_render_data
function boolean (line 51) | static boolean dc_init_video(struct graphics_data *graphics,
function dc_free_video (line 80) | static void dc_free_video(struct graphics_data *graphics)
function boolean (line 86) | static boolean dc_create_window(struct graphics_data *graphics,
function dc_update_colors (line 92) | static void dc_update_colors(struct graphics_data *graphics,
function dc_render_graph (line 106) | static void dc_render_graph(struct graphics_data *graphics)
function dc_render_layer (line 113) | static void dc_render_layer(struct graphics_data *graphics,
function dc_render_cursor (line 121) | static void dc_render_cursor(struct graphics_data *graphics,
function dc_render_mouse (line 131) | static void dc_render_mouse(struct graphics_data *graphics,
function dc_sync_screen (line 139) | static void dc_sync_screen(struct graphics_data *graphics,
function render_dc_register (line 185) | void render_dc_register(struct renderer *renderer)
FILE: arch/dreamcast/render_fb.c
type dc_fb_render_data (line 31) | struct dc_fb_render_data
function boolean (line 35) | static boolean dc_fb_init_video(struct graphics_data *graphics,
function dc_fb_free_video (line 60) | static void dc_fb_free_video(struct graphics_data *graphics)
function boolean (line 65) | static boolean dc_fb_create_window(struct graphics_data *graphics,
function dc_fb_update_colors (line 71) | static void dc_fb_update_colors(struct graphics_data *graphics,
function dc_fb_render_graph (line 85) | static void dc_fb_render_graph(struct graphics_data *graphics)
function dc_fb_render_layer (line 92) | static void dc_fb_render_layer(struct graphics_data *graphics,
function dc_fb_render_cursor (line 99) | static void dc_fb_render_cursor(struct graphics_data *graphics,
function dc_fb_render_mouse (line 109) | static void dc_fb_render_mouse(struct graphics_data *graphics,
function dc_fb_sync_screen (line 117) | static void dc_fb_sync_screen(struct graphics_data *graphics,
function render_dc_fb_register (line 124) | void render_dc_fb_register(struct renderer *renderer)
FILE: arch/dreamcast/thread.h
type condvar_t (line 34) | typedef condvar_t platform_cond;
type mutex_t (line 35) | typedef mutex_t platform_mutex;
type semaphore_t (line 36) | typedef semaphore_t platform_sem;
type kthread_t (line 37) | typedef kthread_t *platform_thread;
type kthread_t (line 38) | typedef kthread_t *platform_thread_id;
function boolean (line 41) | static inline boolean platform_mutex_init(platform_mutex *mutex)
function boolean (line 48) | static inline boolean platform_mutex_destroy(platform_mutex *mutex)
function platform_mutex_lock (line 55) | static inline bool platform_mutex_lock(platform_mutex *mutex)
function platform_mutex_unlock (line 62) | static inline bool platform_mutex_unlock(platform_mutex *mutex)
function boolean (line 69) | static inline boolean platform_cond_init(platform_cond *cond)
function boolean (line 76) | static inline boolean platform_cond_destroy(platform_cond *cond)
function boolean (line 83) | static inline boolean platform_cond_wait(platform_cond *cond,
function boolean (line 91) | static inline boolean platform_cond_timedwait(platform_cond *cond,
function boolean (line 99) | static inline boolean platform_cond_signal(platform_cond *cond)
function boolean (line 106) | static inline boolean platform_cond_broadcast(platform_cond *cond)
function boolean (line 113) | static inline boolean platform_sem_init(platform_sem *sem, unsigned init...
function boolean (line 120) | static inline boolean platform_sem_destroy(platform_sem *sem)
function boolean (line 127) | static inline boolean platform_sem_wait(platform_sem *sem)
function boolean (line 134) | static inline boolean platform_sem_post(platform_sem *sem)
function boolean (line 141) | static inline boolean platform_thread_create(platform_thread *thread,
function boolean (line 153) | static inline boolean platform_thread_join(platform_thread *thread)
function platform_thread_id (line 160) | static inline platform_thread_id platform_get_thread_id(void)
function boolean (line 165) | static inline boolean platform_is_same_thread(platform_thread_id a,
FILE: arch/emscripten/emzip.c
function error (line 31) | int error(const char *message, unsigned int a, unsigned int b, unsigned ...
function zip_archive (line 38) | zip_archive *emzip_open(const void *src, size_t src_len)
function EMSCRIPTEN_KEEPALIVE (line 43) | EMSCRIPTEN_KEEPALIVE
function EMSCRIPTEN_KEEPALIVE (line 52) | EMSCRIPTEN_KEEPALIVE
function EMSCRIPTEN_KEEPALIVE (line 64) | EMSCRIPTEN_KEEPALIVE
function EMSCRIPTEN_KEEPALIVE (line 80) | EMSCRIPTEN_KEEPALIVE
function EMSCRIPTEN_KEEPALIVE (line 86) | EMSCRIPTEN_KEEPALIVE
function EMSCRIPTEN_KEEPALIVE (line 95) | EMSCRIPTEN_KEEPALIVE
function EMSCRIPTEN_KEEPALIVE (line 101) | EMSCRIPTEN_KEEPALIVE
function main (line 107) | int main(void)
FILE: arch/emscripten/web/res/mzxrun_loader.js
function addAudioEventListeners (line 60) | function addAudioEventListeners()
function removeAudioEventListeners (line 67) | function removeAudioEventListeners()
function unlockAudioContext (line 74) | function unlockAudioContext()
FILE: arch/emscripten/web/src/index.js
class LoadingScreen (line 30) | class LoadingScreen {
method constructor (line 31) | constructor(canvas, ctx, options) {
method _drawBackground (line 40) | _drawBackground() {
method progress (line 56) | progress(p) {
function initMemoryStorage (line 186) | function initMemoryStorage() {
function initIndexedDBStorage (line 192) | function initIndexedDBStorage() {
function initLocalStorage (line 203) | function initLocalStorage() {
FILE: arch/emscripten/web/src/storage.js
function filterKeys (line 28) | function filterKeys(list, filter) {
class InMemoryStorage (line 39) | class InMemoryStorage {
method constructor (line 40) | constructor(inputMap, options) {
method canSet (line 48) | canSet(key) {
method get (line 52) | get(key) {
method list (line 59) | list(filter) {
method set (line 63) | set(key, value) {
method remove (line 69) | remove(key) {
class CompositeStorage (line 76) | class CompositeStorage {
method constructor (line 77) | constructor(providers) {
method canSet (line 81) | canSet(key) {
method get (line 91) | get(key) {
method list (line 100) | list(filter) {
method set (line 111) | set(key, value) {
method remove (line 119) | remove(key) {
class AsyncStorageWrapper (line 128) | class AsyncStorageWrapper extends InMemoryStorage {
method constructor (line 129) | constructor(parent) {
method _populate (line 134) | _populate() {
method set (line 152) | set(key, value) {
method remove (line 161) | remove(key) {
class BrowserBackedStorage (line 171) | class BrowserBackedStorage {
method constructor (line 172) | constructor(localStorage, prefix) {
method canSet (line 177) | canSet(key) {
method get (line 181) | get(key) {
method list (line 190) | list(filter) {
method set (line 201) | set(key, value) {
method remove (line 206) | remove(key) {
class IndexedDbBackedAsyncStorage (line 212) | class IndexedDbBackedAsyncStorage {
method constructor (line 213) | constructor(indexedDB, dbName, options) {
method _open (line 218) | _open() {
method canSet (line 236) | canSet(key) {
method get (line 240) | get(key) {
method list (line 254) | list(filter) {
method set (line 290) | set(key, value) {
method remove (line 306) | remove(key) {
function createBrowserBackedStorage (line 320) | function createBrowserBackedStorage(storage, dbName) {
function createIndexedDbBackedAsyncStorage (line 324) | function createIndexedDbBackedAsyncStorage(dbName) {
function wrapAsyncStorage (line 333) | function wrapAsyncStorage(asyncVfs) {
function createInMemoryStorage (line 338) | function createInMemoryStorage(inputMap, options) {
function createCompositeStorage (line 342) | function createCompositeStorage(providers) {
function createZipStorage (line 346) | function createZipStorage(url, options, progressCallback) {
FILE: arch/emscripten/web/src/storage_emscripten.js
constant EPERM (line 25) | const EPERM = 1;
constant ENOENT (line 26) | const ENOENT = 2;
constant EINVAL (line 27) | const EINVAL = 22;
constant ENOTEMPTY (line 28) | const ENOTEMPTY = 39;
constant O_CREAT (line 29) | const O_CREAT = 0x40;
constant O_TRUNC (line 30) | const O_TRUNC = 0x200;
constant S_IFDIR (line 31) | const S_IFDIR = 0x4000;
constant S_IFREG (line 32) | const S_IFREG = 0x8000;
constant S_IFMT (line 33) | const S_IFMT = 0xF000;
function vfs_get_type (line 35) | function vfs_get_type(vfs, path) {
function vfs_next_power_of_two (line 49) | function vfs_next_power_of_two(n) {
function vfs_expand_array (line 55) | function vfs_expand_array(array, newLength) {
function wrapStorageForEmscripten (line 65) | function wrapStorageForEmscripten(vfs) {
FILE: arch/emscripten/web/src/util.js
function drawErrorMessage (line 27) | function drawErrorMessage(canvas, ctx, text) {
function time_ms (line 49) | function time_ms() {
function getIndexedDB (line 53) | function getIndexedDB() {
function getLocalStorage (line 57) | function getLocalStorage() {
function xhrFetchAsArrayBuffer (line 61) | function xhrFetchAsArrayBuffer(url, progressCallback) {
FILE: arch/mingw/pefix.c
type error_t (line 45) | typedef enum
function ftell_and_rewind (line 73) | static long ftell_and_rewind(FILE *f)
function error_t (line 84) | static error_t pe_csum(FILE *f, uint32_t *csum)
function error_t (line 114) | static error_t process_rsrc(FILE *f, uint32_t rsrc_offset)
function error_t (line 187) | static error_t walk_rvas(FILE *f, uint16_t cpu_type,
function error_t (line 262) | static error_t modify_pe(FILE *f)
function main (line 509) | int main(int argc, char *argv[])
FILE: arch/msvc/dirent.h
type _wdirent (line 222) | struct _wdirent {
type _wdirent (line 241) | typedef struct _wdirent _wdirent;
type _WDIR (line 243) | struct _WDIR {
type _WDIR (line 259) | typedef struct _WDIR _WDIR;
type dirent (line 262) | struct dirent {
type dirent (line 281) | typedef struct dirent dirent;
type DIR (line 283) | struct DIR {
type DIR (line 287) | typedef struct DIR DIR;
type dirent (line 294) | struct dirent
type _wdirent (line 295) | struct _wdirent
type dirent (line 298) | struct dirent
type dirent (line 298) | struct dirent
type _wdirent (line 300) | struct _wdirent
type _wdirent (line 300) | struct _wdirent
type dirent (line 308) | struct dirent
type dirent (line 309) | struct dirent
type dirent (line 310) | struct dirent
type dirent (line 310) | struct dirent
type dirent (line 312) | struct dirent
type dirent (line 312) | struct dirent
type dirent (line 314) | struct dirent
type dirent (line 314) | struct dirent
function _WDIR (line 352) | static _WDIR*
type _wdirent (line 453) | struct _wdirent
type _wdirent (line 457) | struct _wdirent
function _wreaddir_r (line 475) | static int
function _wclosedir (line 537) | static int
function _wrewinddir (line 570) | static void
function WIN32_FIND_DATAW (line 586) | static WIN32_FIND_DATAW*
function WIN32_FIND_DATAW (line 637) | static WIN32_FIND_DATAW*
function DIR (line 676) | static DIR*
type dirent (line 732) | struct dirent
type dirent (line 736) | struct dirent
function readdir_r (line 754) | static int
function closedir (line 843) | static int
function rewinddir (line 870) | static void
function scandir (line 881) | static int
function alphasort (line 1018) | static int
function versionsort (line 1026) | static int
function dirent_mbstowcs_s (line 1035) | static int
function dirent_wcstombs_s (line 1087) | static int
function dirent_set_errno (line 1139) | static void
FILE: arch/msvc/msvc.h
type __int64 (line 100) | typedef __int64 ssize_t;
type _W64 (line 102) | typedef _W64 int ssize_t;
FILE: arch/msvc/win32time.c
function gettimeofday (line 23) | int gettimeofday(struct timeval *tv, void *tz)
FILE: arch/msvc/win32time.h
type timeval (line 25) | struct timeval
FILE: arch/nds/arm7/source/arm7main.c
function mzxFifoCommandHandler (line 39) | void mzxFifoCommandHandler(u32 command, void *userdata) {
function VblankHandler (line 64) | void VblankHandler(void) {
function VcountHandler (line 68) | void VcountHandler() {
function powerButtonCB (line 74) | void powerButtonCB() {
function main (line 79) | int main() {
FILE: arch/nds/audio.c
function nds_sound_volume (line 46) | static inline void nds_sound_volume(int volume)
function nds_pcs_sound (line 51) | static inline void nds_pcs_sound(int freq, int volume)
function nds_mm_get_position (line 56) | static inline int nds_mm_get_position(void)
function nds_pcs_tick (line 71) | static inline void nds_pcs_tick(int duration)
function nds_maxmod_init (line 125) | static void nds_maxmod_init(void)
function audio_set_module_order (line 149) | void audio_set_module_order(int order)
function audio_get_module_order (line 154) | int audio_get_module_order(void)
function audio_set_module_position (line 159) | void audio_set_module_position(int position)
function audio_get_module_position (line 165) | int audio_get_module_position(void)
function audio_set_module_volume (line 171) | void audio_set_module_volume(int volume) // 0..255
function audio_set_module_frequency (line 177) | void audio_set_module_frequency(int frequency)
function audio_get_module_frequency (line 190) | int audio_get_module_frequency(void)
function audio_get_module_length (line 195) | int audio_get_module_length(void)
function audio_set_module_loop_start (line 201) | void audio_set_module_loop_start(int loop_start)
function audio_get_module_loop_start (line 206) | int audio_get_module_loop_start(void)
function audio_set_module_loop_end (line 212) | void audio_set_module_loop_end(int loop_end)
function audio_get_module_loop_end (line 217) | int audio_get_module_loop_end(void)
function u8 (line 223) | static u8 *audio_load_mas_file(char *filename)
function u8 (line 266) | static u8 *audio_load_sam_file(char *filename)
function audio_play_module (line 323) | int audio_play_module(char *filename, boolean safely, int volume)
function audio_end_module (line 371) | void audio_end_module(void)
function audio_spot_sample (line 388) | void audio_spot_sample(int period, int which)
function audio_play_sample (line 395) | void audio_play_sample(char *filename, boolean safely, int period)
function audio_end_sample (line 475) | void audio_end_sample(void)
function audio_get_max_samples (line 500) | int audio_get_max_samples(void)
function audio_set_max_samples (line 505) | void audio_set_max_samples(int max_samples)
function nds_audio_vblank (line 512) | void nds_audio_vblank(void)
function init_audio (line 517) | void init_audio(struct config_info *conf)
function quit_audio (line 530) | void quit_audio(void)
function init_audio_platform (line 535) | void init_audio_platform(struct config_info *conf)
function quit_audio_platform (line 549) | void quit_audio_platform(void)
FILE: arch/nds/dlmalloc.c
type mallinfo (line 765) | struct mallinfo {
function FORCEINLINE (line 1661) | static FORCEINLINE void* win32mmap(size_t size) {
function FORCEINLINE (line 1667) | static FORCEINLINE void* win32direct_mmap(size_t size) {
function FORCEINLINE (line 1674) | static FORCEINLINE int win32munmap(void* ptr, size_t size) {
function FORCEINLINE (line 1827) | static FORCEINLINE int x86_cas_lock(int *sl) {
function FORCEINLINE (line 1838) | static FORCEINLINE void x86_clear_lock(int* sl) {
function spin_acquire_lock (line 1872) | static int spin_acquire_lock(int *sl) {
type malloc_recursive_lock (line 1907) | struct malloc_recursive_lock {
function FORCEINLINE (line 1916) | static FORCEINLINE void recursive_release_lock(MLOCK_T *lk) {
function FORCEINLINE (line 1923) | static FORCEINLINE int recursive_acquire_lock(MLOCK_T *lk) {
function FORCEINLINE (line 1944) | static FORCEINLINE int recursive_try_lock(MLOCK_T *lk) {
function init_malloc_global_mutex (line 1980) | static void init_malloc_global_mutex() {
function pthread_init_lock (line 2015) | static int pthread_init_lock (MLOCK_T *lk) {
type malloc_chunk (line 2178) | struct malloc_chunk {
type mchunk (line 2185) | typedef struct malloc_chunk mchunk;
type malloc_chunk (line 2186) | struct malloc_chunk
type malloc_chunk (line 2187) | struct malloc_chunk
type bindex_t (line 2188) | typedef unsigned int bindex_t;
type binmap_t (line 2189) | typedef unsigned int binmap_t;
type flag_t (line 2190) | typedef unsigned int flag_t;
type malloc_tree_chunk (line 2387) | struct malloc_tree_chunk {
type tchunk (line 2399) | typedef struct malloc_tree_chunk tchunk;
type malloc_tree_chunk (line 2400) | struct malloc_tree_chunk
type malloc_tree_chunk (line 2401) | struct malloc_tree_chunk
type malloc_segment (line 2463) | struct malloc_segment {
type msegment (line 2473) | typedef struct malloc_segment msegment;
type malloc_segment (line 2474) | struct malloc_segment
type malloc_state (line 2573) | struct malloc_state {
type malloc_state (line 2598) | struct malloc_state
type malloc_params (line 2609) | struct malloc_params {
type malloc_params (line 2618) | struct malloc_params
type malloc_state (line 2626) | struct malloc_state
function msegmentptr (line 2692) | static msegmentptr segment_holding(mstate m, char* addr) {
function has_segment_link (line 2703) | static int has_segment_link(mstate m, msegmentptr ss) {
function pre_fork (line 3088) | static void pre_fork(void) { ACQUIRE_LOCK(&(gm)->mutex); }
function post_fork_parent (line 3089) | static void post_fork_parent(void) { RELEASE_LOCK(&(gm)->mutex); }
function post_fork_child (line 3090) | static void post_fork_child(void) { INITIAL_LOCK(&(gm)->mutex); }
function init_mparams (line 3094) | static int init_mparams(void) {
function change_mparam (line 3184) | static int change_mparam(int param_number, int value) {
function do_check_any_chunk (line 3211) | static void do_check_any_chunk(mstate m, mchunkptr p) {
function do_check_top_chunk (line 3217) | static void do_check_top_chunk(mstate m, mchunkptr p) {
function do_check_mmapped_chunk (line 3231) | static void do_check_mmapped_chunk(mstate m, mchunkptr p) {
function do_check_inuse_chunk (line 3245) | static void do_check_inuse_chunk(mstate m, mchunkptr p) {
function do_check_free_chunk (line 3256) | static void do_check_free_chunk(mstate m, mchunkptr p) {
function do_check_malloced_chunk (line 3279) | static void do_check_malloced_chunk(mstate m, void* mem, size_t s) {
function do_check_tree (line 3293) | static void do_check_tree(mstate m, tchunkptr t) {
function do_check_treebin (line 3344) | static void do_check_treebin(mstate m, bindex_t i) {
function do_check_smallbin (line 3355) | static void do_check_smallbin(mstate m, bindex_t i) {
function bin_find (line 3379) | static int bin_find(mstate m, mchunkptr x) {
function traverse_and_check (line 3415) | static size_t traverse_and_check(mstate m) {
function do_check_malloc_state (line 3447) | static void do_check_malloc_state(mstate m) {
function internal_mallinfo (line 3479) | static struct mallinfo internal_mallinfo(mstate m) {
function internal_malloc_stats (line 3520) | static void internal_malloc_stats(mstate m) {
function mchunkptr (line 3850) | static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb, int fl...
function init_top (line 3888) | static void init_top(mstate m, mchunkptr p, size_t psize) {
function init_bins (line 3903) | static void init_bins(mstate m) {
function reset_on_error (line 3915) | static void reset_on_error(mstate m) {
function add_segment (line 3975) | static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmap...
function release_unused_segments (line 4241) | static size_t release_unused_segments(mstate m) {
function sys_trim (line 4288) | static int sys_trim(mstate m, size_t pad) {
function dispose_chunk (line 4356) | static void dispose_chunk(mstate m, mchunkptr p, size_t psize) {
function dlfree (line 4675) | void dlfree(void* mem) {
function mchunkptr (line 4804) | static mchunkptr try_realloc_chunk(mstate m, mchunkptr p, size_t nb,
function internal_bulk_free (line 5090) | static size_t internal_bulk_free(mstate m, void* array[], size_t nelem) {
function internal_inspect_all (line 5134) | static void internal_inspect_all(mstate m,
function else (line 5187) | else if (bytes == 0) {
function dlposix_memalign (line 5261) | int dlposix_memalign(void** pp, size_t alignment, size_t bytes) {
function dlbulk_free (line 5309) | size_t dlbulk_free(void* array[], size_t nelem) {
function dlmalloc_inspect_all (line 5314) | void dlmalloc_inspect_all(void(*handler)(void *start,
function dlmalloc_trim (line 5327) | int dlmalloc_trim(size_t pad) {
function dlmalloc_footprint (line 5337) | size_t dlmalloc_footprint(void) {
function dlmalloc_max_footprint (line 5341) | size_t dlmalloc_max_footprint(void) {
function dlmalloc_footprint_limit (line 5345) | size_t dlmalloc_footprint_limit(void) {
function dlmalloc_set_footprint_limit (line 5350) | size_t dlmalloc_set_footprint_limit(size_t bytes) {
function dlmallinfo (line 5362) | struct mallinfo dlmallinfo(void) {
function dlmalloc_stats (line 5368) | void dlmalloc_stats() {
function dlmallopt (line 5373) | int dlmallopt(int param_number, int value) {
function dlmalloc_usable_size (line 5377) | size_t dlmalloc_usable_size(void* mem) {
function mstate (line 5392) | static mstate init_user_mstate(char* tbase, size_t tsize) {
function mspace (line 5415) | mspace create_mspace(size_t capacity, int locked) {
function mspace (line 5434) | mspace create_mspace_with_base(void* base, size_t capacity, int locked) {
function mspace_track_large_chunks (line 5448) | int mspace_track_large_chunks(mspace msp, int enable) {
function destroy_mspace (line 5465) | size_t destroy_mspace(mspace msp) {
function mspace_free (line 5607) | void mspace_free(mspace msp, void* mem) {
function else (line 5737) | else if (bytes == 0) {
function mspace_bulk_free (line 5837) | size_t mspace_bulk_free(mspace msp, void* array[], size_t nelem) {
function mspace_inspect_all (line 5842) | void mspace_inspect_all(mspace msp,
function mspace_trim (line 5861) | int mspace_trim(mspace msp, size_t pad) {
function mspace_malloc_stats (line 5877) | void mspace_malloc_stats(mspace msp) {
function mspace_footprint (line 5888) | size_t mspace_footprint(mspace msp) {
function mspace_max_footprint (line 5900) | size_t mspace_max_footprint(mspace msp) {
function mspace_footprint_limit (line 5912) | size_t mspace_footprint_limit(mspace msp) {
function mspace_set_footprint_limit (line 5925) | size_t mspace_set_footprint_limit(mspace msp, size_t bytes) {
function mspace_mallinfo (line 5944) | struct mallinfo mspace_mallinfo(mspace msp) {
function mspace_usable_size (line 5953) | size_t mspace_usable_size(const void* mem) {
function mspace_mallopt (line 5962) | int mspace_mallopt(int param_number, int value) {
FILE: arch/nds/dlmalloc.h
type mallinfo (line 85) | struct mallinfo {
type mallinfo (line 331) | struct mallinfo
type mallinfo (line 583) | struct mallinfo
FILE: arch/nds/event.c
type input_status (line 33) | struct input_status
type focus_mode (line 35) | enum focus_mode
function boolean (line 39) | boolean __update_event_status(void)
function boolean (line 50) | boolean __peek_exit_input(void)
function __wait_event (line 56) | void __wait_event(void)
function __warp_mouse (line 65) | void __warp_mouse(int x, int y)
function get_allow_focus_changes (line 71) | enum focus_mode get_allow_focus_changes(void)
function boolean (line 76) | boolean platform_has_screen_keyboard(void)
function boolean (line 81) | boolean platform_show_screen_keyboard(void)
function boolean (line 89) | boolean platform_hide_screen_keyboard(void)
function boolean (line 97) | boolean platform_is_screen_keyboard_active(void)
function platform_init_event (line 102) | void platform_init_event(void)
function nds_map_joystick (line 109) | static int nds_map_joystick(int nds_button, boolean *is_hat)
function convert_nds_internal (line 133) | static void convert_nds_internal(int key, int *internal_code, int *unicode)
function boolean (line 180) | static boolean process_event(NDSEvent *event)
function nds_update_hw_keys (line 299) | static void nds_update_hw_keys(void)
function nds_update_sw_keyboard (line 330) | static void nds_update_sw_keyboard(void)
function nds_update_mouse (line 358) | static void nds_update_mouse(void)
function nds_update_input (line 401) | void nds_update_input(void)
FILE: arch/nds/event.h
type focus_mode (line 27) | enum focus_mode
type focus_mode (line 34) | enum focus_mode
FILE: arch/nds/evq.c
function nds_event_poll (line 29) | bool nds_event_poll(NDSEvent *dest)
function nds_event_push (line 66) | void nds_event_push(NDSEvent *src)
function nds_event_fill_key_down (line 87) | void nds_event_fill_key_down(NDSEvent *dest, int key)
function nds_event_fill_key_up (line 94) | void nds_event_fill_key_up(NDSEvent *dest, int key)
function nds_event_fill_keyboard_down (line 101) | void nds_event_fill_keyboard_down(NDSEvent *dest, int key)
function nds_event_fill_keyboard_up (line 108) | void nds_event_fill_keyboard_up(NDSEvent *dest, int key)
function nds_event_fill_touch_down (line 115) | void nds_event_fill_touch_down(NDSEvent *dest)
function nds_event_fill_touch_move (line 121) | void nds_event_fill_touch_move(NDSEvent *dest, int x, int y)
function nds_event_fill_touch_up (line 129) | void nds_event_fill_touch_up(NDSEvent *dest)
FILE: arch/nds/evq.h
type NDSEventType (line 28) | enum NDSEventType
type NDSEvent (line 40) | typedef struct NDSEvent_tag
FILE: arch/nds/extmem.c
type extram_mspace_def (line 36) | struct extram_mspace_def
type extram_mspace (line 42) | enum extram_mspace
type extram_mspace_def (line 53) | struct extram_mspace_def
function nds_ext_print_info (line 55) | static void nds_ext_print_info(void)
function nds_ext_free (line 109) | static void nds_ext_free(void *mem)
function nds_ext_unlock (line 118) | static void nds_ext_unlock(void)
function nds_ext_lock (line 128) | static void nds_ext_lock(void)
function platform_extram_free (line 151) | void platform_extram_free(void *buffer)
function platform_extram_lock (line 156) | void platform_extram_lock(void)
function platform_extram_unlock (line 162) | void platform_extram_unlock(void)
function nds_create_mspace_with_base (line 167) | static void nds_create_mspace_with_base(enum extram_mspace id, void *bas...
function boolean (line 174) | boolean nds_ram_init(void)
FILE: arch/nds/gen_protected_palette.py
function xy2idx (line 51) | def xy2idx(x, y):
function blend (line 54) | def blend(c1, c2):
function col2nds (line 61) | def col2nds(c):
FILE: arch/nds/platform.c
function delay (line 43) | void delay(uint32_t ms)
function get_ticks (line 51) | uint64_t get_ticks(void)
function timer_init (line 56) | static void timer_init(void)
function ITCM_CODE (line 82) | ITCM_CODE
function ITCM_CODE (line 94) | ITCM_CODE
function mzxExceptionHandler (line 115) | static void mzxExceptionHandler(void)
function boolean (line 142) | boolean platform_init(void)
function platform_quit (line 167) | void platform_quit(void)
function main (line 173) | int main(int argc, char *argv[])
FILE: arch/nds/ram.c
function vu16 (line 26) | static vu16 *_sc_unlock (void)
function _sc_lock (line 38) | static void _sc_lock (void)
function vu16 (line 48) | static vu16 *_m3_unlock (void)
function _m3_lock (line 72) | static void _m3_lock (void)
function vu16 (line 94) | static vu16 *_opera_unlock (void)
function _opera_lock (line 103) | static void _opera_lock (void)
function vu16 (line 111) | static vu16 *_g6_unlock (void)
function _g6_lock (line 135) | static void _g6_lock (void)
function vu16 (line 157) | static vu16 *_ez_unlock (void)
function _ez_lock (line 186) | static void _ez_lock (void)
function _ram_test (line 226) | static bool _ram_test (void)
function _ram_precalc_size (line 248) | static void _ram_precalc_size (void)
function ram_init (line 273) | bool ram_init (RAM_TYPE type)
function RAM_TYPE (line 390) | RAM_TYPE ram_type (void)
function u32 (line 406) | u32 ram_size (void)
function vu16 (line 414) | vu16* ram_unlock (void)
function ram_lock (line 426) | void ram_lock (void)
function ram_turbo (line 437) | void ram_turbo (bool enable)
FILE: arch/nds/ram.h
type RAM_TYPE (line 20) | typedef enum { DETECT_RAM=0, SC_RAM, M3_RAM, OPERA_RAM, G6_RAM, EZ_RAM }...
FILE: arch/nds/render.c
type Subscreen_Mode (line 90) | enum Subscreen_Mode
type Subscreen_Mode (line 91) | enum Subscreen_Mode
function nds_on_vblank (line 101) | static void nds_on_vblank(void)
function boolean (line 117) | boolean is_scaled_mode(enum Subscreen_Mode mode)
function palette_idx_table_init (line 122) | static void palette_idx_table_init(void)
function nds_subscreen_scaled_init (line 145) | static void nds_subscreen_scaled_init(void)
function nds_subscreen_keyboard_init (line 185) | static void nds_subscreen_keyboard_init(void)
function nds_subscreen_keyboard_exit (line 197) | static void nds_subscreen_keyboard_exit(void)
function nds_mainscreen_init (line 203) | static void nds_mainscreen_init(struct graphics_data *graphics)
function nds_video_jitter (line 239) | void nds_video_jitter(void)
function nds_video_rasterhack (line 261) | void nds_video_rasterhack(void)
function nds_video_do_transition (line 294) | void nds_video_do_transition(void)
function nds_keyboard_scroll_in (line 314) | static void nds_keyboard_scroll_in(void)
function nds_keyboard_scroll_out (line 344) | static void nds_keyboard_scroll_out(void)
function nds_sleep_check (line 367) | void nds_sleep_check(void)
function nds_clear_graph_cache (line 405) | static void nds_clear_graph_cache(void)
function boolean (line 413) | static boolean nds_init_video(struct graphics_data *graphics,
function boolean (line 458) | static boolean nds_create_window(struct graphics_data *graphics,
function nds_mainscreen_focus (line 465) | static void nds_mainscreen_focus(int x, int y)
type graphics_data (line 523) | struct graphics_data
type char_element (line 530) | struct char_element
function nds_render_graph_1to1 (line 624) | __attribute__((optimize("-O3")))
function nds_render_graph (line 692) | static void nds_render_graph(struct graphics_data *graphics)
function nds_update_palette_entry (line 701) | static void nds_update_palette_entry(struct rgb_color *palette, unsigned...
function nds_update_colors (line 732) | static void nds_update_colors(struct graphics_data *graphics,
function nds_render_cursor (line 741) | static void nds_render_cursor(struct graphics_data *graphics, unsigned i...
function nds_render_mouse (line 747) | static void nds_render_mouse(struct graphics_data *graphics,
function nds_sync_screen (line 753) | static void nds_sync_screen(struct graphics_data *graphics,
function nds_remap_char (line 759) | static void nds_remap_char(struct graphics_data *graphics, uint16_t chr)
function nds_remap_charbyte (line 789) | static void nds_remap_charbyte(struct graphics_data *graphics, uint16_t ...
function nds_remap_char_range (line 814) | static void nds_remap_char_range(struct graphics_data *graphics, uint16_...
function nds_focus_pixel (line 827) | static void nds_focus_pixel(struct graphics_data *graphics,
function render_nds_register (line 850) | void render_nds_register(struct renderer *renderer)
function boolean (line 867) | boolean nds_subscreen_preview(void)
function boolean (line 883) | boolean nds_subscreen_keyboard(void)
FILE: arch/nds/render.h
type Subscreen_Mode (line 30) | enum Subscreen_Mode
type Subscreen_Mode (line 38) | enum Subscreen_Mode
type Subscreen_Mode (line 40) | enum Subscreen_Mode
FILE: arch/wii/audio.c
function voice_callback (line 60) | static void voice_callback(s32 voice)
function init_audio_platform (line 66) | void init_audio_platform(struct config_info *conf)
function quit_audio_platform (line 97) | void quit_audio_platform(void)
FILE: arch/wii/event.c
type input_status (line 58) | struct input_status
type event_type (line 60) | enum event_type
type button_event (line 76) | struct button_event
type axis_event (line 83) | struct axis_event
type ext_event (line 91) | struct ext_event
type pointer_event (line 98) | struct pointer_event
type key_event (line 105) | struct key_event
type locks_event (line 112) | struct locks_event
type mouse_move_event (line 118) | struct mouse_move_event
type mouse_button_event (line 125) | struct mouse_button_event
type event_type (line 133) | enum event_type
type button_event (line 134) | struct button_event
type axis_event (line 135) | struct axis_event
type ext_event (line 136) | struct ext_event
type pointer_event (line 137) | struct pointer_event
type key_event (line 138) | struct key_event
type locks_event (line 139) | struct locks_event
type mouse_move_event (line 140) | struct mouse_move_event
type mouse_button_event (line 141) | struct mouse_button_event
function write_eq (line 159) | static int write_eq(union event *ev)
function read_eq (line 169) | static int read_eq(union event *ev)
function scan_buttons (line 182) | static void scan_buttons(unsigned int pad, uint32_t old_btns, uint32_t n...
function adjust_axis (line 207) | static int16_t adjust_axis(int pos, int min, int cen, int max)
function scan_joystick (line 219) | static void scan_joystick(unsigned int pad, unsigned int xaxis, joystick...
function adjust_axis_single (line 245) | static int16_t adjust_axis_single(float mag, int16_t minval, int16_t max...
function scan_axis_single (line 254) | static void scan_axis_single(unsigned int pad, unsigned int axis, float ...
function poll_input (line 273) | static void poll_input(void)
function wii_map_button (line 564) | static int wii_map_button(unsigned int pad, uint32_t button)
function wii_map_axis (line 672) | static int wii_map_axis(unsigned int pad, unsigned int axis)
function convert_USB_internal (line 690) | static enum keycode convert_USB_internal(unsigned int usb_hid_key)
function boolean (line 802) | static boolean process_event(union event *ev)
function boolean (line 1078) | boolean __update_event_status(void)
function boolean (line 1092) | boolean __peek_exit_input(void)
function __wait_event (line 1098) | void __wait_event(void)
function __warp_mouse (line 1112) | void __warp_mouse(int x, int y)
function boolean (line 1117) | boolean platform_has_screen_keyboard(void)
function boolean (line 1122) | boolean platform_show_screen_keyboard(void)
function boolean (line 1127) | boolean platform_hide_screen_keyboard(void)
function boolean (line 1132) | boolean platform_is_screen_keyboard_active(void)
function platform_init_event (line 1137) | void platform_init_event(void)
FILE: arch/wii/network.cpp
function set_net_errno (line 52) | static int set_net_errno(int value)
function boolean (line 58) | boolean Socket::platform_init(struct config_info *conf)
function boolean (line 63) | boolean Socket::platform_init_late()
type hostent (line 88) | struct hostent
type sockaddr (line 109) | struct sockaddr
type sockaddr (line 115) | struct sockaddr
type sockaddr (line 117) | struct sockaddr
type sockaddr (line 127) | struct sockaddr
type sockaddr (line 130) | struct sockaddr
type pollfd (line 160) | struct pollfd
type pollfd (line 168) | struct pollfd
type pollsd (line 169) | struct pollsd
type pollsd (line 180) | struct pollsd
type timeval (line 185) | struct timeval
type sockaddr (line 199) | struct sockaddr
type sockaddr (line 201) | struct sockaddr
type sockaddr (line 233) | struct sockaddr
function boolean (line 239) | boolean Socket::is_last_error_fatal()
FILE: arch/wii/platform.c
function reset_callback (line 58) | static void reset_callback(u32 irq, void *ctx)
function delay (line 69) | void delay(uint32_t ms)
function get_ticks (line 75) | uint64_t get_ticks(void)
function boolean (line 80) | boolean platform_init(void)
function platform_quit (line 95) | void platform_quit(void)
function main (line 105) | int main(int argc, char *argv[])
FILE: arch/wii/render_gx.c
type ci4tlut (line 90) | struct ci4tlut
type gx_render_data (line 95) | struct gx_render_data
function boolean (line 255) | static boolean gx_init_video(struct graphics_data *graphics,
function gx_free_video (line 374) | static void gx_free_video(struct graphics_data *graphics)
function boolean (line 380) | static boolean gx_create_window(struct graphics_data *graphics,
function gx_update_colors (line 428) | static void gx_update_colors(struct graphics_data *graphics,
function gx_remap_char_range (line 451) | static void gx_remap_char_range(struct graphics_data *graphics, uint16_t...
function gx_remap_char (line 468) | static void gx_remap_char(struct graphics_data *graphics, uint16_t chr)
function gx_remap_charbyte (line 475) | static void gx_remap_charbyte(struct graphics_data *graphics,
function gx_draw_char (line 489) | static void gx_draw_char(struct graphics_data *graphics, uint16_t chr)
function gx_draw_charsets (line 526) | static void gx_draw_charsets(struct graphics_data *graphics)
function gx_check_remap_chars (line 567) | static void gx_check_remap_chars(struct graphics_data *graphics)
function gx_check_remap_palettes (line 598) | static void gx_check_remap_palettes(struct graphics_data *graphics)
function gx_get_tlut_id_mzx (line 613) | static int gx_get_tlut_id_mzx(struct graphics_data *graphics,
function gx_get_tlut_id_smzx (line 646) | static int gx_get_tlut_id_smzx(struct graphics_data *graphics,
function gx_set_tlut_mzx (line 671) | static void gx_set_tlut_mzx(struct graphics_data *graphics,
function gx_set_tlut_smzx (line 692) | static void gx_set_tlut_smzx(struct graphics_data *graphics,
function gx_get_char_value (line 711) | static uint16_t gx_get_char_value(struct video_layer *layer, uint16_t ch...
function gx_render_layer (line 722) | static void gx_render_layer(struct graphics_data *graphics,
function gx_render_cursor (line 871) | static void gx_render_cursor(struct graphics_data *graphics, unsigned in...
function gx_render_mouse (line 890) | static void gx_render_mouse(struct graphics_data *graphics,
function gx_sync_screen (line 910) | static void gx_sync_screen(struct graphics_data *graphics,
function render_gx_register (line 953) | void render_gx_register(struct renderer *renderer)
FILE: arch/wii/render_xfb.c
type xfb_render_data (line 53) | struct xfb_render_data
function boolean (line 66) | static boolean xfb_init_video(struct graphics_data *graphics,
function xfb_free_video (line 124) | static void xfb_free_video(struct graphics_data *graphics)
function boolean (line 130) | static boolean xfb_create_window(struct graphics_data *graphics,
function xfb_update_colors (line 136) | static void xfb_update_colors(struct graphics_data *graphics,
function xfb_render_graph (line 148) | static void xfb_render_graph(struct graphics_data *graphics)
function xfb_render_layer (line 176) | static void xfb_render_layer(struct graphics_data *graphics,
function xfb_render_cursor (line 190) | static void xfb_render_cursor(struct graphics_data *graphics, unsigned i...
function xfb_render_mouse (line 220) | static void xfb_render_mouse(struct graphics_data *graphics,
function yuy_mix_x (line 255) | static inline uint32_t yuy_mix_x(uint32_t a, uint32_t b)
function yuy_mix_y (line 264) | static inline uint32_t yuy_mix_y(uint32_t a, uint32_t b)
function xfb_copy_buffer (line 273) | static void xfb_copy_buffer(struct graphics_data *graphics)
function xfb_sync_screen (line 341) | static void xfb_sync_screen(struct graphics_data *graphics,
function render_xfb_register (line 363) | void render_xfb_register(struct renderer *renderer)
FILE: arch/wii/thread.h
type cond_t (line 42) | typedef cond_t platform_cond;
type mutex_t (line 43) | typedef mutex_t platform_mutex;
type sem_t (line 44) | typedef sem_t platform_sem;
type lwp_t (line 45) | typedef lwp_t platform_thread;
type lwp_t (line 46) | typedef lwp_t platform_thread_id;
type THREAD_RES (line 47) | typedef THREAD_RES (*platform_thread_fn)(void *);
function boolean (line 49) | static inline boolean platform_mutex_init(platform_mutex *mutex)
function boolean (line 56) | static inline boolean platform_mutex_destroy(platform_mutex *mutex)
function boolean (line 63) | static inline boolean platform_mutex_lock(platform_mutex *mutex)
function boolean (line 70) | static inline boolean platform_mutex_unlock(platform_mutex *mutex)
function boolean (line 77) | static inline boolean platform_cond_init(platform_cond *cond)
function boolean (line 84) | static inline boolean platform_cond_destroy(platform_cond *cond)
function boolean (line 91) | static inline boolean platform_cond_wait(platform_cond *cond,
function boolean (line 99) | static inline boolean platform_cond_timedwait(platform_cond *cond,
function boolean (line 126) | static inline boolean platform_cond_signal(platform_cond *cond)
function boolean (line 133) | static inline boolean platform_cond_broadcast(platform_cond *cond)
function boolean (line 140) | static inline boolean platform_sem_init(platform_sem *sem, unsigned init...
function boolean (line 147) | static inline boolean platform_sem_destroy(platform_sem *sem)
function boolean (line 154) | static inline boolean platform_sem_wait(platform_sem *sem)
function boolean (line 161) | static inline boolean platform_sem_post(platform_sem *sem)
function boolean (line 168) | static inline boolean platform_thread_create(platform_thread *thread,
function boolean (line 176) | static inline boolean platform_thread_join(platform_thread *thread)
function platform_thread_id (line 183) | static inline platform_thread_id platform_get_thread_id(void)
function boolean (line 188) | static inline boolean platform_is_same_thread(platform_thread_id a,
function platform_yield (line 194) | static inline void platform_yield(void)
FILE: contrib/gdm2s3m/src/error.c
function error_handle (line 24) | void error_handle (const char *file, int line, error_code error)
FILE: contrib/gdm2s3m/src/error.h
type error_code (line 32) | typedef enum {
FILE: contrib/gdm2s3m/src/gdm.c
type GDM_file (line 27) | struct GDM_file
type GDM_header (line 30) | struct GDM_header
type GDM_pattern (line 31) | struct GDM_pattern
type GDM_samhdr (line 32) | struct GDM_samhdr
type GDM_file (line 33) | struct GDM_file
type GDM_file (line 38) | struct GDM_file
type GDM_file (line 39) | struct GDM_file
type GDM_pattern (line 109) | struct GDM_pattern
type GDM_sample (line 151) | struct GDM_sample
type GDM_sample (line 152) | struct GDM_sample
function info_gdm (line 205) | void info_gdm (struct GDM_file *gdm)
function free_gdm (line 304) | void free_gdm (struct GDM_file *gdm)
FILE: contrib/gdm2s3m/src/gdm.h
type GDM_header (line 32) | struct GDM_header {
type GDM_order (line 45) | struct GDM_order {
type GDM_pattern (line 49) | struct GDM_pattern {
type GDM_samhdr (line 54) | struct GDM_samhdr {
type GDM_file (line 70) | struct GDM_file {
type GDM_sample (line 80) | struct GDM_sample {
type GDM_file (line 86) | struct GDM_file
type GDM_file (line 87) | struct GDM_file
type GDM_file (line 88) | struct GDM_file
FILE: contrib/gdm2s3m/src/gdm2s3m.c
function convert_gdm_s3m (line 32) | int convert_gdm_s3m (const char *gdmfile, const char *s3mfile)
FILE: contrib/gdm2s3m/src/s3m.c
type S3M_file (line 28) | struct S3M_file
type S3M_order (line 40) | struct S3M_order
type S3M_header (line 41) | struct S3M_header
type S3M_samhdr (line 134) | struct S3M_samhdr
type S3M_pattern (line 198) | struct S3M_pattern
type S3M_sample (line 246) | struct S3M_sample
function remap_effects (line 289) | static void remap_effects (uint8_t gdm_effect, uint8_t gdm_param,
type S3M_file (line 493) | struct S3M_file
type GDM_file (line 493) | struct GDM_file
type S3M_file (line 495) | struct S3M_file
type S3M_file (line 505) | struct S3M_file
type S3M_file (line 508) | struct S3M_file
type S3M_pattern (line 555) | struct S3M_pattern
type S3M_pattern (line 559) | struct S3M_pattern
type GDM_pattern (line 560) | struct GDM_pattern
type S3M_sample (line 666) | struct S3M_sample
type S3M_sample (line 669) | struct S3M_sample
type S3M_sample (line 673) | struct S3M_sample
type GDM_sample (line 674) | struct GDM_sample
function free_s3m (line 713) | void free_s3m (struct S3M_file *s3m)
FILE: contrib/gdm2s3m/src/s3m.h
type S3M_header (line 34) | struct S3M_header {
type S3M_order (line 45) | struct S3M_order {
type S3M_samhdr (line 49) | struct S3M_samhdr {
type S3M_pattern (line 60) | struct S3M_pattern {
type S3M_file (line 69) | struct S3M_file {
type S3M_sample (line 77) | struct S3M_sample {
type S3M_file (line 83) | struct S3M_file
type S3M_file (line 84) | struct S3M_file
type GDM_file (line 84) | struct GDM_file
type S3M_file (line 85) | struct S3M_file
FILE: contrib/gdm2s3m/src/types.h
type BYTE (line 42) | typedef BYTE uint8_t;
type USHORT (line 43) | typedef USHORT uint16_t;
type ULONG (line 44) | typedef ULONG uint32_t;
FILE: contrib/gdm2s3m/src/utility.c
function stream_to_alloc (line 26) | static void stream_to_alloc (void *dest, uint8_t **src, uint32_t n)
function alloc_to_stream (line 35) | static void alloc_to_stream (void *src, uint8_t **dest, uint32_t n)
function check_s_to_a (line 44) | void check_s_to_a (uint8_t *start, size_t size, void *dest, uint8_t **src,
function check_a_to_s (line 57) | void check_a_to_s (uint8_t **start, size_t *size, void *src, uint8_t **d...
FILE: contrib/gdm2s3m/src/utility.h
function gdm2s3m_swap16 (line 44) | static inline void gdm2s3m_swap16(uint16_t *var)
function gdm2s3m_swap32 (line 49) | static inline void gdm2s3m_swap32(uint32_t *var)
FILE: contrib/infback9/infback9.c
function voidpf (line 15) | static inline voidpf _zcalloc(voidpf opaque, unsigned nmemb, unsigned size)
function _zcfree (line 17) | static inline void _zcfree(voidpf opaque, voidpf ptr) { free(ptr); }
function inflateBack9Init_ (line 25) | int ZEXPORT inflateBack9Init_(z_stream FAR *strm, unsigned char FAR *win...
function makefixed9 (line 56) | void makefixed9(void) {
function inflateBack9 (line 218) | int ZEXPORT inflateBack9(z_stream FAR *strm, in_func in, void FAR *in_desc,
function inflateBack9End (line 603) | int ZEXPORT inflateBack9End(z_stream FAR *strm) {
FILE: contrib/infback9/inflate9.h
type inflate_mode (line 15) | typedef enum {
type inflate_state (line 38) | struct inflate_state {
FILE: contrib/infback9/inftree9.c
function inflate_table9 (line 32) | int inflate_table9(codetype type, unsigned short FAR *lens, unsigned codes,
FILE: contrib/infback9/inftree9.h
type code (line 27) | typedef struct {
type codetype (line 56) | typedef enum {
FILE: contrib/khash/khash.h
type khint32_t (line 135) | typedef unsigned int khint32_t;
type khint32_t (line 137) | typedef unsigned long khint32_t;
type khint64_t (line 141) | typedef unsigned long khint64_t;
type khint64_t (line 143) | typedef unsigned long long khint64_t;
type khint32_t (line 162) | typedef khint32_t khint_t;
type khint_t (line 163) | typedef khint_t khiter_t;
function kh_inline (line 395) | static kh_inline khint_t __ac_X31_hash_string(const char *s)
function kh_inline (line 412) | static kh_inline khint_t __ac_Wang_hash(khint_t key)
FILE: contrib/libmodplug/src/fastmix.cpp
class CzCUBICSPLINE (line 98) | class CzCUBICSPLINE
class CzWINDOWEDFIR (line 188) | class CzWINDOWEDFIR
method coef (line 193) | float coef( int _PCnr, float _POfs, float _PCut, int _PWidth, int _PTy...
function LONG (line 1362) | static LONG MPPFASTCALL GetSampleCount(MODCHANNEL *pChn, LONG nSamples)
function UINT (line 1473) | UINT CSoundFile::CreateStereoMix(int count)
function DWORD (line 1679) | DWORD MPPASMCALL X86_Convert32To8(LPVOID lp8, int *pBuffer, DWORD lSampl...
function DWORD (line 1773) | DWORD MPPASMCALL X86_Convert32To16(LPVOID lp16, int *pBuffer, DWORD lSam...
function DWORD (line 1869) | DWORD MPPASMCALL X86_Convert32To24(LPVOID lp16, int *pBuffer, DWORD lSam...
function DWORD (line 1968) | DWORD MPPASMCALL X86_Convert32To32(LPVOID lp16, int *pBuffer, DWORD lSam...
function VOID (line 2103) | VOID MPPASMCALL X86_MonoFromStereo(int *pMixBuf, UINT nSamples)
function UINT (line 2291) | __declspec(naked) UINT MPPASMCALL X86_AGC(int *pBuffer, UINT nSamples, U...
function UINT (line 2330) | UINT MPPASMCALL X86_AGC(int *pBuffer, UINT nSamples, UINT nAGC)
FILE: contrib/libmodplug/src/libmodplug/it_defs.h
type ITFILEHEADER (line 6) | typedef struct tagITFILEHEADER
type ITENVELOPE (line 33) | typedef struct tagITENVELOPE
type ITOLDINSTRUMENT (line 46) | typedef struct tagITOLDINSTRUMENT
type ITINSTRUMENT (line 72) | typedef struct tagITINSTRUMENT
type ITSAMPLESTRUCT (line 105) | typedef struct ITSAMPLESTRUCT
FILE: contrib/libmodplug/src/libmodplug/sndfile.h
type BYTE (line 21) | typedef const BYTE * LPCBYTE;
type MODINSTRUMENT (line 305) | typedef struct _MODINSTRUMENT
type INSTRUMENTHEADER (line 326) | typedef struct _INSTRUMENTHEADER
type MODCHANNEL (line 375) | typedef struct _MODCHANNEL
type MODCHANNELSETTINGS (line 436) | typedef struct _MODCHANNELSETTINGS
type MODCOMMAND (line 446) | typedef struct _MODCOMMAND
function class (line 460) | class MODPLUG_EXPORT IMixPlugin
type SNDMIXPLUGINSTATE (line 479) | typedef struct _SNDMIXPLUGINSTATE
type SNDMIXPLUGININFO (line 488) | typedef struct _SNDMIXPLUGININFO
type SNDMIXPLUGIN (line 499) | typedef struct _SNDMIXPLUGIN
type BOOL (line 508) | typedef BOOL (*PMIXPLUGINCREATEPROC)(PSNDMIXPLUGIN);
type MODMIDICFG (line 525) | typedef struct MODMIDICFG
type VOID (line 534) | typedef VOID (* LPSNDMIXHOOKPROC)(int *, unsigned long, unsigned long);
function class (line 539) | class MODPLUG_EXPORT CSoundFile
type WAVEFILEHEADER (line 846) | typedef struct WAVEFILEHEADER
type WAVEFORMATHEADER (line 854) | typedef struct WAVEFORMATHEADER
type WAVEDATAHEADER (line 867) | typedef struct WAVEDATAHEADER
type WAVESMPLHEADER (line 874) | typedef struct WAVESMPLHEADER
type SAMPLELOOPSTRUCT (line 891) | typedef struct SAMPLELOOPSTRUCT
type WAVESAMPLERINFO (line 902) | typedef struct WAVESAMPLERINFO
type WAVELISTHEADER (line 909) | typedef struct WAVELISTHEADER
type WAVEEXTRAHEADER (line 917) | typedef struct WAVEEXTRAHEADER
function bswap_16 (line 972) | static __inline unsigned short int
function bswap_32 (line 987) | static __inline unsigned int
function ARM_get16 (line 996) | static __inline unsigned short int
function ARM_get32 (line 1004) | static __inline unsigned int
FILE: contrib/libmodplug/src/libmodplug/stdafx.h
function ProcessPlugins (line 47) | inline void ProcessPlugins(int n) {}
type CHAR (line 69) | typedef int8_t CHAR;
type UCHAR (line 70) | typedef uint8_t UCHAR;
type USHORT (line 72) | typedef uint16_t USHORT;
type ULONG (line 73) | typedef uint32_t ULONG;
type UINT (line 74) | typedef uint32_t UINT;
type DWORD (line 75) | typedef uint32_t DWORD;
type LONG (line 76) | typedef int32_t LONG;
type LONGLONG (line 77) | typedef int64_t LONGLONG;
type WORD (line 80) | typedef uint16_t WORD;
type BYTE (line 81) | typedef uint8_t BYTE;
type BOOL (line 83) | typedef bool BOOL;
type VOID (line 89) | typedef void VOID;
function LONG (line 91) | static inline LONG MulDiv (long a, long b, long c)
function ProcessPlugins (line 115) | static inline void ProcessPlugins(int n) {}
FILE: contrib/libmodplug/src/load_669.cpp
type tagFILEHEADER669 (line 17) | struct tagFILEHEADER669
type tagSAMPLE669 (line 30) | struct tagSAMPLE669
function DWORD (line 38) | DWORD lengthArrayToDWORD(const BYTE length[4]) {
function BOOL (line 48) | BOOL CSoundFile::Read669(const BYTE *lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_amf.cpp
type _AMFFILEHEADER (line 25) | struct _AMFFILEHEADER
type _AMFSAMPLE (line 36) | struct _AMFSAMPLE
function VOID (line 55) | static VOID AMF_Unpack(MODCOMMAND *pPat, const BYTE *pTrack, UINT nRows,...
function BOOL (line 167) | BOOL CSoundFile::ReadAMF(LPCBYTE lpStream, const DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_dsm.cpp
type DSMNOTE (line 22) | struct DSMNOTE
type DSMINST (line 28) | struct DSMINST
type DSMFILEHEADER (line 46) | struct DSMFILEHEADER
type DSMSONG (line 56) | struct DSMSONG
type DSMPATT (line 74) | struct DSMPATT
function BOOL (line 85) | BOOL CSoundFile::ReadDSM(LPCBYTE lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_far.cpp
type FARHEADER1 (line 19) | struct FARHEADER1
type FARHEADER2 (line 34) | struct FARHEADER2
type FARSAMPLE (line 43) | struct FARSAMPLE
function BOOL (line 58) | BOOL CSoundFile::ReadFAR(const BYTE *lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_gdm.cpp
type tagFILEHEADERGDM (line 17) | struct tagFILEHEADERGDM
type tagSAMPLEGDM (line 46) | struct tagSAMPLEGDM
type SAMPLEGDMFLAGS (line 48) | enum SAMPLEGDMFLAGS
function WORD (line 70) | static WORD fixu16(const BYTE *val)
function DWORD (line 75) | static DWORD fixu32(const BYTE val[4])
function GDM_TranslateEffect (line 80) | static void GDM_TranslateEffect(const FILEHEADERGDM *pfh, MODCOMMAND &ev...
function BOOL (line 226) | BOOL CSoundFile::ReadGDM(const BYTE *lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_it.cpp
function UINT (line 33) | static inline UINT ConvertVolParam(UINT value)
function BOOL (line 40) | BOOL CSoundFile::ITInstrToMPT(const void *p, INSTRUMENTHEADER *penv, UIN...
function BOOL (line 161) | BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dwMemLength)
function BOOL (line 602) | BOOL CSoundFile::SaveIT(LPCSTR lpszFileName, UINT nPacking)
function DWORD (line 1186) | static DWORD ITReadBits(DWORD &bitbuf, UINT &bitnum, LPBYTE &ibuf, CHAR n)
function ITUnpack8Bit (line 1217) | void ITUnpack8Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, D...
function ITUnpack16Bit (line 1297) | void ITUnpack16Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, ...
function UINT (line 1379) | UINT CSoundFile::SaveMixPlugins(FILE *f, BOOL bUpdate)
function UINT (line 1463) | UINT CSoundFile::LoadMixPlugins(const void *pData, UINT nLen)
FILE: contrib/libmodplug/src/load_med.cpp
type tagMEDMODULEHEADER (line 44) | struct tagMEDMODULEHEADER
type tagMMD0SAMPLE (line 67) | struct tagMMD0SAMPLE
type tagMMDSAMPLEHEADER (line 78) | struct tagMMDSAMPLEHEADER
type tagMMD0SONGHEADER (line 106) | struct tagMMD0SONGHEADER
type tagMMD2SONGHEADER (line 124) | struct tagMMD2SONGHEADER
type tagMMD0BLOCK (line 160) | struct tagMMD0BLOCK
type tagMMD1BLOCK (line 174) | struct tagMMD1BLOCK
type tagMMD1BLOCKINFO (line 182) | struct tagMMD1BLOCKINFO
type tagMMD2PLAYSEQ (line 195) | struct tagMMD2PLAYSEQ
type tagMMDCOMMAND (line 208) | struct tagMMDCOMMAND
type tagMMD0EXP (line 217) | struct tagMMD0EXP
function MedConvert (line 247) | static void MedConvert(MODCOMMAND *p, const MMD0SONGHEADER *pmsh)
function BOOL (line 453) | BOOL CSoundFile::ReadMed(const BYTE *lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_mod.cpp
function WORD (line 64) | WORD CSoundFile::ModSaveCommand(const MODCOMMAND *m, BOOL bXM) const
type _MODSAMPLE (line 152) | struct _MODSAMPLE
type _MODMAGIC (line 162) | struct _MODMAGIC
function BOOL (line 172) | static BOOL IsValidName(LPCSTR s, int length, CHAR minChar)
function BOOL (line 188) | static BOOL IsMagic(LPCSTR s1, LPCSTR s2)
function BOOL (line 194) | BOOL CSoundFile::ReadMod(const BYTE *lpStream, DWORD dwMemLength)
function BOOL (line 405) | BOOL CSoundFile::SaveMod(LPCSTR lpszFileName, UINT nPacking)
FILE: contrib/libmodplug/src/load_mtm.cpp
type tagMTMSAMPLE (line 18) | struct tagMTMSAMPLE
type tagMTMHEADER (line 30) | struct tagMTMHEADER
function BOOL (line 49) | BOOL CSoundFile::ReadMTM(LPCBYTE lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_okt.cpp
type OKTFILEHEADER (line 16) | struct OKTFILEHEADER
type OKTSAMPLE (line 28) | struct OKTSAMPLE
function BOOL (line 41) | BOOL CSoundFile::ReadOKT(const BYTE *lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_s3m.cpp
type tagS3MSAMPLESTRUCT (line 20) | struct tagS3MSAMPLESTRUCT
type tagS3MFILEHEADER (line 43) | struct tagS3MFILEHEADER
function DWORD (line 186) | static DWORD boundInput(DWORD input, DWORD smin, DWORD smax)
function BOOL (line 194) | BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD dwMemLength)
function BOOL (line 428) | BOOL CSoundFile::SaveS3M(LPCSTR lpszFileName, UINT nPacking)
FILE: contrib/libmodplug/src/load_stm.cpp
type tagSTMNOTE (line 14) | struct tagSTMNOTE
type tagSTMSAMPLE (line 24) | struct tagSTMSAMPLE
type tagSTMHEADER (line 39) | struct tagSTMHEADER
function BOOL (line 59) | BOOL CSoundFile::ReadSTM(const BYTE *lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_ult.cpp
type tagULTHEADER (line 19) | struct tagULTHEADER
type tagULTSAMPLE (line 28) | struct tagULTSAMPLE
function BOOL (line 44) | BOOL CSoundFile::ReadUlt(const BYTE *lpStream, DWORD dwMemLength)
FILE: contrib/libmodplug/src/load_wav.cpp
function BOOL (line 17) | BOOL CSoundFile::ReadWav(const BYTE *lpStream, DWORD dwMemLength)
type IMAADPCMBLOCK (line 148) | struct IMAADPCMBLOCK
function BOOL (line 174) | BOOL IMAADPCMUnpack16(signed short *pdest, UINT nLen, LPBYTE psrc, DWORD...
FILE: contrib/libmodplug/src/load_xm.cpp
type tagXMFILEHEADER (line 19) | struct tagXMFILEHEADER
type tagXMINSTRUMENTHEADER (line 34) | struct tagXMINSTRUMENTHEADER
type tagXMSAMPLEHEADER (line 44) | struct tagXMSAMPLEHEADER
type tagXMSAMPLESTRUCT (line 59) | struct tagXMSAMPLESTRUCT
function BOOL (line 75) | BOOL CSoundFile::ReadXM(const BYTE *lpStream, DWORD dwMemLength)
function BOOL (line 589) | BOOL CSoundFile::SaveXM(LPCSTR lpszFileName, UINT nPacking)
FILE: contrib/libmodplug/src/mmcmp.cpp
type MMCMPFILEHEADER (line 14) | struct MMCMPFILEHEADER
type MMCMPHEADER (line 20) | struct MMCMPHEADER
type MMCMPBLOCK (line 30) | struct MMCMPBLOCK
type MMCMPSUBBLOCK (line 41) | struct MMCMPSUBBLOCK
type MMCMPFILEHEADER (line 49) | struct MMCMPFILEHEADER
type MMCMPHEADER (line 50) | struct MMCMPHEADER
type MMCMPBLOCK (line 51) | struct MMCMPBLOCK
type MMCMPSUBBLOCK (line 52) | struct MMCMPSUBBLOCK
type MMCMPBITBUFFER (line 59) | struct MMCMPBITBUFFER
function DWORD (line 70) | DWORD MMCMPBITBUFFER::GetBits(UINT nBits)
function swap_mfh (line 115) | static void swap_mfh(LPMMCMPFILEHEADER fh)
function swap_mmh (line 120) | static void swap_mmh(LPMMCMPHEADER mh)
function swap_block (line 128) | static void swap_block (LPMMCMPBLOCK blk)
function swap_subblock (line 139) | static void swap_subblock (LPMMCMPSUBBLOCK sblk)
function BOOL (line 146) | BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength)
type _PPBITBUFFER (line 398) | struct _PPBITBUFFER
function ULONG (line 409) | ULONG PPBITBUFFER::GetBits(UINT n)
function VOID (line 429) | static VOID PP20_DoUnpack(const BYTE *pSrc, UINT nSrcLen, BYTE *pDst, UI...
function BOOL (line 485) | static BOOL PP20_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength)
FILE: contrib/libmodplug/src/modplug.cpp
type _ModPlugFile (line 11) | struct _ModPlugFile
type ModPlug (line 16) | namespace ModPlug
function UpdateSettings (line 40) | static void UpdateSettings(bool updateBasicConfig)
function ModPlugFile (line 84) | ModPlugFile* ModPlug_Load(const void* data, int size)
function ModPlug_Unload (line 100) | void ModPlug_Unload(ModPlugFile* file)
function ModPlug_Read (line 106) | int ModPlug_Read(ModPlugFile* file, void* buffer, int size)
function ModPlug_GetLength (line 118) | int ModPlug_GetLength(ModPlugFile* file)
function ModPlug_InitMixerCallback (line 125) | void ModPlug_InitMixerCallback(ModPlugFile* file,ModPlugMixerProc proc)
function ModPlug_UnloadMixerCallback (line 131) | void ModPlug_UnloadMixerCallback(ModPlugFile* file)
function ModPlug_GetMasterVolume (line 137) | unsigned int ModPlug_GetMasterVolume(ModPlugFile* file)
function ModPlug_SetMasterVolume (line 142) | void ModPlug_SetMasterVolume(ModPlugFile* file,unsigned int cvol)
function ModPlug_GetCurrentSpeed (line 149) | int ModPlug_GetCurrentSpeed(ModPlugFile* file)
function ModPlug_GetCurrentTempo (line 154) | int ModPlug_GetCurrentTempo(ModPlugFile* file)
function ModPlug_GetCurrentOrder (line 159) | int ModPlug_GetCurrentOrder(ModPlugFile* file)
function ModPlug_GetCurrentPattern (line 164) | int ModPlug_GetCurrentPattern(ModPlugFile* file)
function ModPlug_GetCurrentRow (line 169) | int ModPlug_GetCurrentRow(ModPlugFile* file)
function ModPlug_GetPlayingChannels (line 174) | int ModPlug_GetPlayingChannels(ModPlugFile* file)
function ModPlug_SeekOrder (line 179) | void ModPlug_SeekOrder(ModPlugFile* file,int order)
function ModPlug_GetModuleType (line 184) | int ModPlug_GetModuleType(ModPlugFile* file)
function ModPlug_ExportS3M (line 195) | char ModPlug_ExportS3M(ModPlugFile* file,const char* filepath)
function ModPlug_ExportXM (line 200) | char ModPlug_ExportXM(ModPlugFile* file,const char* filepath)
function ModPlug_ExportMOD (line 205) | char ModPlug_ExportMOD(ModPlugFile* file,const char* filepath)
function ModPlug_ExportIT (line 210) | char ModPlug_ExportIT(ModPlugFile* file,const char* filepath)
function ModPlug_NumInstruments (line 216) | unsigned int ModPlug_NumInstruments(ModPlugFile* file)
function ModPlug_NumSamples (line 221) | unsigned int ModPlug_NumSamples(ModPlugFile* file)
function ModPlug_NumPatterns (line 226) | unsigned int ModPlug_NumPatterns(ModPlugFile* file)
function ModPlug_NumChannels (line 231) | unsigned int ModPlug_NumChannels(ModPlugFile* file)
function ModPlug_SampleName (line 236) | unsigned int ModPlug_SampleName(ModPlugFile* file,unsigned int qual,char...
function ModPlug_InstrumentName (line 241) | unsigned int ModPlug_InstrumentName(ModPlugFile* file,unsigned int qual,...
function ModPlugNote (line 246) | ModPlugNote* ModPlug_GetPattern(ModPlugFile* file,int pattern,unsigned i...
function ModPlug_Seek (line 256) | void ModPlug_Seek(ModPlugFile* file, int millisecond)
function ModPlug_GetSettings (line 272) | void ModPlug_GetSettings(ModPlug_Settings* settings)
function ModPlug_SetSettings (line 277) | void ModPlug_SetSettings(const ModPlug_Settings* settings)
FILE: contrib/libmodplug/src/modplug.h
type _ModPlugFile (line 16) | struct _ModPlugFile
type ModPlugFile (line 17) | typedef struct _ModPlugFile ModPlugFile;
type _ModPlugNote (line 19) | struct _ModPlugNote {
type ModPlugNote (line 27) | typedef struct _ModPlugNote ModPlugNote;
type _ModPlug_Flags (line 62) | enum _ModPlug_Flags
type _ModPlug_ResamplingMode (line 71) | enum _ModPlug_ResamplingMode
type ModPlug_Settings (line 79) | typedef struct _ModPlug_Settings
FILE: contrib/libmodplug/src/snd_dsp.cpp
function UINT (line 106) | static UINT GetMaskFromSize(UINT len)
function BOOL (line 427) | BOOL CSoundFile::SetReverbParameters(UINT nDepth, UINT nDelay)
function BOOL (line 442) | BOOL CSoundFile::SetXBassParameters(UINT nDepth, UINT nRange)
function BOOL (line 458) | BOOL CSoundFile::SetSurroundParameters(UINT nDepth, UINT nDelay)
function BOOL (line 471) | BOOL CSoundFile::SetWaveConfigEx(BOOL bSurround,BOOL bNoOverSampling,BOO...
FILE: contrib/libmodplug/src/snd_flt.cpp
function pow (line 23) | static float pow(float a, float b)
function DWORD (line 53) | DWORD CSoundFile::CutOffToFrequency(UINT nCutOff, int flt_modifier) const
FILE: contrib/libmodplug/src/snd_fx.cpp
function DWORD (line 19) | DWORD CSoundFile::GetLength(BOOL bAdjust, BOOL bTotal)
function UINT (line 567) | UINT CSoundFile::GetNNAChannel(UINT nChn) const
function BOOL (line 733) | BOOL CSoundFile::ProcessEffects()
function DWORD (line 2176) | DWORD CSoundFile::IsSongFinished(UINT nStartOrder, UINT nStartRow) const
function BOOL (line 2215) | BOOL CSoundFile::IsValidBackwardJump(UINT nStartOrder, UINT nStartRow, U...
function UINT (line 2264) | UINT CSoundFile::GetNoteFromPeriod(UINT period) const
function UINT (line 2298) | UINT CSoundFile::GetPeriodFromNote(UINT note, int nFineTune, UINT nC4Spe...
function UINT (line 2364) | UINT CSoundFile::GetFreqFromPeriod(UINT period, UINT nC4Speed, int nPeri...
FILE: contrib/libmodplug/src/sndfile.cpp
function BOOL (line 86) | BOOL CSoundFile::Create(LPCBYTE lpStream, DWORD dwMemLength)
function BOOL (line 280) | BOOL CSoundFile::Destroy()
function MODCOMMAND (line 342) | MODCOMMAND *CSoundFile::AllocatePattern(UINT rows, UINT nchns)
function UINT (line 394) | UINT CSoundFile::GetNumChannels() const
function UINT (line 403) | UINT CSoundFile::GetSongComments(LPSTR s, UINT len, UINT linesize)
function UINT (line 424) | UINT CSoundFile::GetRawSongComments(LPSTR s, UINT len, UINT linesize)
function BOOL (line 473) | BOOL CSoundFile::SetWaveConfig(UINT nRate,UINT nBits,UINT nChannels,BOOL...
function BOOL (line 488) | BOOL CSoundFile::SetMixConfig(UINT nStereoSeparation, UINT nMaxMixChannels)
function BOOL (line 499) | BOOL CSoundFile::SetResamplingMode(UINT nMode)
function BOOL (line 517) | BOOL CSoundFile::SetMasterVolume(UINT nVol, BOOL bAdjustAGC)
function UINT (line 546) | UINT CSoundFile::GetNumPatterns() const
function UINT (line 555) | UINT CSoundFile::GetNumInstruments() const
function UINT (line 564) | UINT CSoundFile::GetMaxPosition() const
function UINT (line 579) | UINT CSoundFile::GetCurrentPos() const
function UINT (line 759) | UINT CSoundFile::GetBestSaveFormat() const
function UINT (line 774) | UINT CSoundFile::GetSaveFormats() const
function UINT (line 794) | UINT CSoundFile::GetSampleName(UINT nSample,LPSTR s) const
function UINT (line 806) | UINT CSoundFile::GetInstrumentName(UINT nInstr,LPSTR s) const
function UINT (line 824) | UINT CSoundFile::PackSample(int &sample, int next)
function BOOL (line 841) | BOOL CSoundFile::CanPackSample(LPSTR pSample, UINT nLen, UINT nPacking, ...
function UINT (line 885) | UINT CSoundFile::WriteSample(FILE *f, MODINSTRUMENT *pins, UINT nFlags, ...
function UINT (line 1101) | UINT CSoundFile::ReadSample(MODINSTRUMENT *pIns, UINT nFlags, LPCSTR lpM...
function DWORD (line 1659) | DWORD CSoundFile::TransposeToFrequency(int transp, int ftune)
function BOOL (line 1774) | BOOL CSoundFile::SetPatternName(UINT nPat, LPCSTR lpszName)
function BOOL (line 1806) | BOOL CSoundFile::GetPatternName(UINT nPat, LPSTR lpszName, UINT cbSize) ...
function UINT (line 1824) | UINT CSoundFile::DetectUnusedSamples(BOOL *pbIns)
function BOOL (line 1876) | BOOL CSoundFile::RemoveSelectedSamples(BOOL *pbIns)
function BOOL (line 1892) | BOOL CSoundFile::DestroySample(UINT nSample)
FILE: contrib/libmodplug/src/sndmix.cpp
function _muldiv (line 83) | int _muldiv(long a, long b, long c)
function _muldivr (line 130) | int _muldivr(long a, long b, long c)
function BOOL (line 180) | BOOL CSoundFile::InitPlayer(BOOL bReset)
function BOOL (line 201) | BOOL CSoundFile::FadeSong(UINT msec)
function BOOL (line 227) | BOOL CSoundFile::GlobalFadeSong(UINT msec)
function UINT (line 238) | UINT CSoundFile::Read(LPVOID lpDestBuffer, UINT cbBuffer)
function BOOL (line 349) | BOOL CSoundFile::ProcessRow()
function BOOL (line 466) | BOOL CSoundFile::ReadNote()
FILE: contrib/libxmp/include/xmp.h
type xmp_channel (line 169) | struct xmp_channel {
type xmp_pattern (line 179) | struct xmp_pattern {
type xmp_event (line 184) | struct xmp_event {
type xmp_track (line 195) | struct xmp_track {
type xmp_envelope (line 200) | struct xmp_envelope {
type xmp_subinstrument (line 217) | struct xmp_subinstrument {
type xmp_instrument (line 247) | struct xmp_instrument {
type xmp_sample (line 266) | struct xmp_sample {
type xmp_sequence (line 284) | struct xmp_sequence {
type xmp_module (line 289) | struct xmp_module {
type xmp_test_info (line 311) | struct xmp_test_info {
type xmp_module_info (line 316) | struct xmp_module_info {
type xmp_channel_info (line 325) | struct xmp_channel_info {
type xmp_frame_info (line 338) | struct xmp_frame_info { /* Current frame information */
type xmp_callbacks (line 361) | struct xmp_callbacks {
type xmp_callbacks (line 382) | struct xmp_callbacks
type xmp_test_info (line 384) | struct xmp_test_info
type xmp_test_info (line 385) | struct xmp_test_info
type xmp_test_info (line 386) | struct xmp_test_info
type xmp_callbacks (line 387) | struct xmp_callbacks
type xmp_test_info (line 387) | struct xmp_test_info
type xmp_frame_info (line 395) | struct xmp_frame_info
type xmp_event (line 397) | struct xmp_event
type xmp_module_info (line 398) | struct xmp_module_info
FILE: contrib/libxmp/src/callbackio.h
type CBFILE (line 7) | typedef struct {
function LIBXMP_BEGIN_DECLS (line 13) | LIBXMP_BEGIN_DECLS
function int8 (line 26) | static inline int8 cbread8s(CBFILE *f, int *err)
function uint16 (line 31) | static inline uint16 cbread16l(CBFILE *f, int *err)
function uint16 (line 44) | static inline uint16 cbread16b(CBFILE *f, int *err)
function uint32 (line 57) | static inline uint32 cbread24l(CBFILE *f, int *err)
function uint32 (line 70) | static inline uint32 cbread24b(CBFILE *f, int *err)
function uint32 (line 83) | static inline uint32 cbread32l(CBFILE *f, int *err)
function uint32 (line 96) | static inline uint32 cbread32b(CBFILE *f, int *err)
function cbread (line 109) | static inline size_t cbread(void *dest, size_t len, size_t nmemb, CBFILE...
function cbseek (line 117) | static inline int cbseek(CBFILE *f, long offset, int whence)
function cbtell (line 123) | static inline long cbtell(CBFILE *f)
function cbeof (line 128) | static inline int cbeof(CBFILE *f)
function cbfilelength (line 133) | static inline long cbfilelength(CBFILE *f)
function CBFILE (line 152) | static inline CBFILE *cbopen(void *priv, struct xmp_callbacks callbacks)
function cbclose (line 175) | static inline int cbclose(CBFILE *f)
FILE: contrib/libxmp/src/common.h
type int8 (line 107) | typedef signed char int8;
type int16 (line 108) | typedef signed short int int16;
type int32 (line 109) | typedef signed int int32;
type uint8 (line 110) | typedef unsigned char uint8;
type uint16 (line 111) | typedef unsigned short int uint16;
type uint32 (line 112) | typedef unsigned int uint32;
type int64 (line 114) | typedef signed __int64 int64;
type uint64 (line 115) | typedef unsigned __int64 uint64;
type uint64 (line 117) | typedef unsigned long uint64;
type int64 (line 118) | typedef signed long int64;
type uint64 (line 120) | typedef unsigned long long uint64;
type int64 (line 121) | typedef signed long long int64;
function D_ (line 185) | static void __inline D_(const char *text, ...) {
type ord_data (line 464) | struct ord_data {
type smix_data (line 478) | struct smix_data {
type extra_sample_data (line 487) | struct extra_sample_data {
type midi_macro (line 493) | struct midi_macro {
type midi_macro_data (line 497) | struct midi_macro_data {
type module_data (line 502) | struct module_data {
type pattern_loop (line 546) | struct pattern_loop {
type flow_control (line 551) | struct flow_control {
type virt_channel (line 575) | struct virt_channel {
type scan_data (line 580) | struct scan_data {
type player_data (line 587) | struct player_data {
type mixer_data (line 643) | struct mixer_data {
type rng_state (line 661) | struct rng_state {
type context_data (line 665) | struct context_data {
type context_data (line 678) | struct context_data
type context_data (line 679) | struct context_data
type context_data (line 680) | struct context_data
type context_data (line 681) | struct context_data
type context_data (line 682) | struct context_data
type context_data (line 683) | struct context_data
function write8 (line 693) | static inline void write8 (FILE *f, uint8 b) {
type xmp_instrument (line 708) | struct xmp_instrument
type context_data (line 708) | struct context_data
type xmp_sample (line 709) | struct xmp_sample
type context_data (line 709) | struct context_data
FILE: contrib/libxmp/src/control.c
function xmp_context (line 32) | xmp_context xmp_create_context(void)
function xmp_free_context (line 49) | void xmp_free_context(xmp_context opaque)
function set_position (line 61) | static void set_position(struct context_data *ctx, int pos, int dir)
function xmp_next_position (line 128) | int xmp_next_position(xmp_context opaque)
function xmp_prev_position (line 148) | int xmp_prev_position(xmp_context opaque)
function xmp_set_position (line 165) | int xmp_set_position(xmp_context opaque, int pos)
function xmp_set_row (line 182) | int xmp_set_row(xmp_context opaque, int row)
function xmp_stop_module (line 214) | void xmp_stop_module(xmp_context opaque)
function xmp_restart_module (line 225) | void xmp_restart_module(xmp_context opaque)
function xmp_seek_time (line 237) | int xmp_seek_time(xmp_context opaque, int time)
function xmp_channel_mute (line 268) | int xmp_channel_mute(xmp_context opaque, int chn, int status)
function xmp_channel_vol (line 292) | int xmp_channel_vol(xmp_context opaque, int chn, int vol)
function xmp_set_player__ (line 337) | int xmp_set_player__(xmp_context opaque, int parm, int val)
function xmp_get_player__ (line 462) | int xmp_get_player__(xmp_context opaque, int parm)
function xmp_inject_event (line 548) | void xmp_inject_event(xmp_context opaque, int channel, struct xmp_event *e)
function xmp_set_instrument_path (line 560) | int xmp_set_instrument_path(xmp_context opaque, const char *path)
function xmp_set_tempo_factor (line 581) | int xmp_set_tempo_factor(xmp_context opaque, double val)
FILE: contrib/libxmp/src/dataio.c
function uint8 (line 36) | uint8 read8(FILE *f, int *err)
function int8 (line 49) | int8 read8s(FILE *f, int *err)
function uint16 (line 62) | uint16 read16l(FILE *f, int *err)
function uint16 (line 77) | uint16 read16b(FILE *f, int *err)
function uint32 (line 92) | uint32 read24l(FILE *f, int *err)
function uint32 (line 108) | uint32 read24b(FILE *f, int *err)
function uint32 (line 124) | uint32 read32l(FILE *f, int *err)
function uint32 (line 141) | uint32 read32b(FILE *f, int *err)
function uint16 (line 158) | uint16 readmem16l(const uint8 *m)
function uint16 (line 168) | uint16 readmem16b(const uint8 *m)
function uint32 (line 178) | uint32 readmem24l(const uint8 *m)
function uint32 (line 189) | uint32 readmem24b(const uint8 *m)
function uint32 (line 200) | uint32 readmem32l(const uint8 *m)
function uint32 (line 212) | uint32 readmem32b(const uint8 *m)
function write16l (line 226) | void write16l(FILE *f, uint16 w)
function write16b (line 232) | void write16b(FILE *f, uint16 w)
function write32l (line 238) | void write32l(FILE *f, uint32 w)
function write32b (line 246) | void write32b(FILE *f, uint32 w)
FILE: contrib/libxmp/src/effects.c
function do_toneporta (line 70) | static void do_toneporta(struct context_data *ctx,
function libxmp_process_fx (line 100) | void libxmp_process_fx(struct context_data *ctx, struct channel_data *xc...
FILE: contrib/libxmp/src/extras.c
function libxmp_release_module_extras (line 34) | void libxmp_release_module_extras(struct context_data *ctx)
function libxmp_new_channel_extras (line 50) | int libxmp_new_channel_extras(struct context_data *ctx, struct channel_d...
function libxmp_release_channel_extras (line 68) | void libxmp_release_channel_extras(struct context_data *ctx, struct chan...
function libxmp_reset_channel_extras (line 80) | void libxmp_reset_channel_extras(struct context_data *ctx, struct channe...
function libxmp_play_extras (line 96) | void libxmp_play_extras(struct context_data *ctx, struct channel_data *x...
function libxmp_extras_get_volume (line 112) | int libxmp_extras_get_volume(struct context_data *ctx, struct channel_da...
function libxmp_extras_get_period (line 129) | int libxmp_extras_get_period(struct context_data *ctx, struct channel_da...
function libxmp_extras_get_linear_bend (line 140) | int libxmp_extras_get_linear_bend(struct context_data *ctx, struct chann...
function libxmp_extras_process_fx (line 154) | void libxmp_extras_process_fx(struct context_data *ctx, struct channel_d...
FILE: contrib/libxmp/src/extras.h
type context_data (line 4) | struct context_data
type context_data (line 5) | struct context_data
type channel_data (line 5) | struct channel_data
type context_data (line 6) | struct context_data
type channel_data (line 6) | struct channel_data
type context_data (line 7) | struct context_data
type channel_data (line 7) | struct channel_data
type context_data (line 8) | struct context_data
type channel_data (line 8) | struct channel_data
type context_data (line 9) | struct context_data
type channel_data (line 9) | struct channel_data
type context_data (line 10) | struct context_data
type channel_data (line 10) | struct channel_data
type context_data (line 11) | struct context_data
type channel_data (line 11) | struct channel_data
type context_data (line 12) | struct context_data
type channel_data (line 12) | struct channel_data
type context_data (line 16) | struct context_data
FILE: contrib/libxmp/src/far_extras.c
function libxmp_far_translate_tempo (line 79) | int libxmp_far_translate_tempo(int mode, int fine_change, int coarse,
function libxmp_far_update_tempo (line 141) | static void libxmp_far_update_tempo(struct context_data *ctx, int fine_c...
function libxmp_far_update_vibrato (line 155) | static void libxmp_far_update_vibrato(struct lfo *lfo, int rate, int depth)
function libxmp_far_retrigger_delay (line 162) | static int libxmp_far_retrigger_delay(struct far_module_extras *me, int ...
function libxmp_far_play_extras (line 187) | void libxmp_far_play_extras(struct context_data *ctx, struct channel_dat...
function libxmp_far_new_channel_extras (line 198) | int libxmp_far_new_channel_extras(struct channel_data *xc)
function libxmp_far_reset_channel_extras (line 207) | void libxmp_far_reset_channel_extras(struct channel_data *xc)
function libxmp_far_release_channel_extras (line 212) | void libxmp_far_release_channel_extras(struct channel_data *xc)
function libxmp_far_new_module_extras (line 218) | int libxmp_far_new_module_extras(struct module_data *m)
function libxmp_far_release_module_extras (line 228) | void libxmp_far_release_module_extras(struct module_data *m)
function libxmp_far_extras_process_fx (line 234) | void libxmp_far_extras_process_fx(struct context_data *ctx, struct chann...
FILE: contrib/libxmp/src/far_extras.h
type far_channel_extras (line 13) | struct far_channel_extras {
type far_module_extras (line 19) | struct far_module_extras {
type context_data (line 45) | struct context_data
type channel_data (line 45) | struct channel_data
type context_data (line 46) | struct context_data
type channel_data (line 46) | struct channel_data
type channel_data (line 47) | struct channel_data
type channel_data (line 48) | struct channel_data
type channel_data (line 49) | struct channel_data
type module_data (line 50) | struct module_data
type module_data (line 51) | struct module_data
type context_data (line 52) | struct context_data
type channel_data (line 52) | struct channel_data
FILE: contrib/libxmp/src/filetype.c
function libxmp_get_filetype (line 33) | int libxmp_get_filetype (const char *path)
function libxmp_get_filetype (line 48) | int libxmp_get_filetype (const char *path)
function libxmp_get_filetype (line 63) | int libxmp_get_filetype (const char *path)
function libxmp_get_filetype (line 78) | int libxmp_get_filetype (const char *path)
function libxmp_get_filetype (line 90) | int libxmp_get_filetype (const char *path)
function libxmp_get_filetype (line 111) | int libxmp_get_filetype (const char *path)
function libxmp_get_filetype (line 134) | int libxmp_get_filetype (const char *path)
FILE: contrib/libxmp/src/filter.c
function libxmp_filter_setup (line 80) | void libxmp_filter_setup(int srate, int cutoff, int res, int *a0, int *b...
FILE: contrib/libxmp/src/flow.c
function libxmp_process_pattern_loop (line 35) | void libxmp_process_pattern_loop(struct context_data *ctx,
function libxmp_process_pattern_jump (line 138) | void libxmp_process_pattern_jump(struct context_data *ctx,
function libxmp_process_pattern_break (line 159) | void libxmp_process_pattern_break(struct context_data *ctx,
function libxmp_process_line_jump (line 178) | void libxmp_process_line_jump(struct context_data *ctx,
FILE: contrib/libxmp/src/format.c
type format_loader (line 28) | struct format_loader
FILE: contrib/libxmp/src/format.h
type format_loader (line 7) | struct format_loader {
type format_loader (line 13) | struct format_loader
type format_loader (line 17) | struct format_loader
type format_loader (line 18) | struct format_loader
type format_loader (line 19) | struct format_loader
type format_loader (line 20) | struct format_loader
type format_loader (line 23) | struct format_loader
type format_loader (line 24) | struct format_loader
type format_loader (line 25) | struct format_loader
type format_loader (line 26) | struct format_loader
type format_loader (line 27) | struct format_loader
type format_loader (line 28) | struct format_loader
type format_loader (line 29) | struct format_loader
type format_loader (line 30) | struct format_loader
type format_loader (line 31) | struct format_loader
type format_loader (line 32) | struct format_loader
type format_loader (line 33) | struct format_loader
type format_loader (line 34) | struct format_loader
type format_loader (line 35) | struct format_loader
type format_loader (line 36) | struct format_loader
type format_loader (line 37) | struct format_loader
type format_loader (line 38) | struct format_loader
type format_loader (line 39) | struct format_loader
type format_loader (line 40) | struct format_loader
type format_loader (line 41) | struct format_loader
type format_loader (line 42) | struct format_loader
type format_loader (line 43) | struct format_loader
type format_loader (line 44) | struct format_loader
type format_loader (line 45) | struct format_loader
type format_loader (line 46) | struct format_loader
type format_loader (line 47) | struct format_loader
type format_loader (line 48) | struct format_loader
type format_loader (line 49) | struct format_loader
type format_loader (line 50) | struct format_loader
type format_loader (line 51) | struct format_loader
type format_loader (line 52) | struct format_loader
type format_loader (line 53) | struct format_loader
type format_loader (line 54) | struct format_loader
type format_loader (line 55) | struct format_loader
type format_loader (line 56) | struct format_loader
type format_loader (line 57) | struct format_loader
type format_loader (line 58) | struct format_loader
type format_loader (line 59) | struct format_loader
type format_loader (line 60) | struct format_loader
type format_loader (line 61) | struct format_loader
type format_loader (line 62) | struct format_loader
type format_loader (line 63) | struct format_loader
type format_loader (line 64) | struct format_loader
type format_loader (line 65) | struct format_loader
type format_loader (line 66) | struct format_loader
type format_loader (line 67) | struct format_loader
type format_loader (line 68) | struct format_loader
type format_loader (line 69) | struct format_loader
type format_loader (line 70) | struct format_loader
type format_loader (line 71) | struct format_loader
type format_loader (line 73) | struct format_loader
type format_loader (line 74) | struct format_loader
type format_loader (line 75) | struct format_loader
type format_loader (line 76) | struct format_loader
type format_loader (line 77) | struct format_loader
type format_loader (line 78) | struct format_loader
type format_loader (line 79) | struct format_loader
type format_loader (line 80) | struct format_loader
type format_loader (line 81) | struct format_loader
type format_loader (line 82) | struct format_loader
type format_loader (line 83) | struct format_loader
type pw_format (line 97) | struct pw_format
type xmp_test_info (line 98) | struct xmp_test_info
FILE: contrib/libxmp/src/hio.c
function get_size (line 29) | static long get_size(FILE *f)
function int8 (line 48) | int8 hio_read8s(HIO_HANDLE *h)
function uint8 (line 73) | uint8 hio_read8(HIO_HANDLE *h)
function uint16 (line 98) | uint16 hio_read16l(HIO_HANDLE *h)
function uint16 (line 123) | uint16 hio_read16b(HIO_HANDLE *h)
function uint32 (line 148) | uint32 hio_read24l(HIO_HANDLE *h)
function uint32 (line 173) | uint32 hio_read24b(HIO_HANDLE *h)
function uint32 (line 198) | uint32 hio_read32l(HIO_HANDLE *h)
function uint32 (line 223) | uint32 hio_read32b(HIO_HANDLE *h)
function hio_read (line 248) | size_t hio_read(void *buf, size_t size, size_t num, HIO_HANDLE *h)
function hio_seek (line 280) | int hio_seek(HIO_HANDLE *h, long offset, int whence)
function hio_tell (line 317) | long hio_tell(HIO_HANDLE *h)
function hio_eof (line 346) | int hio_eof(HIO_HANDLE *h)
function hio_error (line 359) | int hio_error(HIO_HANDLE *h)
function HIO_HANDLE (line 366) | HIO_HANDLE *hio_open(const char *path, const char *mode)
function HIO_HANDLE (line 393) | HIO_HANDLE *hio_open_const_mem(const void *ptr, long size)
function HIO_HANDLE (line 414) | HIO_HANDLE *hio_open_file(FILE *f)
function HIO_HANDLE (line 434) | HIO_HANDLE *hio_open_file2(FILE *f)
function HIO_HANDLE (line 446) | HIO_HANDLE *hio_open_callbacks(void *priv, struct xmp_callbacks callbacks)
function hio_close_internal (line 470) | static int hio_close_internal(HIO_HANDLE *h)
function hio_reopen_mem (line 489) | int hio_reopen_mem(void *ptr, long size, int free_after_use, HIO_HANDLE *h)
function hio_reopen_file (line 514) | int hio_reopen_file(FILE *f, int close_after_use, HIO_HANDLE *h)
function hio_close (line 534) | int hio_close(HIO_HANDLE *h)
function hio_size (line 541) | long hio_size(HIO_HANDLE *h)
FILE: contrib/libxmp/src/hio.h
type hio_type (line 9) | enum hio_type {
type HIO_HANDLE (line 15) | typedef struct {
type xmp_callbacks (line 44) | struct xmp_callbacks
FILE: contrib/libxmp/src/hmn_extras.c
function libxmp_hmn_linear_bend (line 50) | int libxmp_hmn_linear_bend(struct context_data *ctx, struct channel_data...
function libxmp_hmn_play_extras (line 55) | void libxmp_hmn_play_extras(struct context_data *ctx, struct channel_dat...
function libxmp_hmn_new_instrument_extras (line 85) | int libxmp_hmn_new_instrument_extras(struct xmp_instrument *xxi)
function libxmp_hmn_new_channel_extras (line 94) | int libxmp_hmn_new_channel_extras(struct channel_data *xc)
function libxmp_hmn_reset_channel_extras (line 103) | void libxmp_hmn_reset_channel_extras(struct channel_data *xc)
function libxmp_hmn_release_channel_extras (line 108) | void libxmp_hmn_release_channel_extras(struct channel_data *xc)
function libxmp_hmn_new_module_extras (line 114) | int libxmp_hmn_new_module_extras(struct module_data *m)
function libxmp_hmn_release_module_extras (line 123) | void libxmp_hmn_release_module_extras(struct module_data *m)
function libxmp_hmn_extras_process_fx (line 129) | void libxmp_hmn_extras_process_fx(struct context_data *ctx, struct chann...
FILE: contrib/libxmp/src/hmn_extras.h
type hmn_instrument_extras (line 6) | struct hmn_instrument_extras {
type hmn_channel_extras (line 14) | struct hmn_channel_extras {
type hmn_module_extras (line 20) | struct hmn_module_extras {
type context_data (line 39) | struct context_data
type channel_data (line 39) | struct channel_data
type channel_data (line 40) | struct channel_data
type context_data (line 41) | struct context_data
type channel_data (line 41) | struct channel_data
type xmp_instrument (line 42) | struct xmp_instrument
type channel_data (line 43) | struct channel_data
type channel_data (line 44) | struct channel_data
type channel_data (line 45) | struct channel_data
type module_data (line 46) | struct module_data
type module_data (line 47) | struct module_data
type context_data (line 48) | struct context_data
type channel_data (line 48) | struct channel_data
FILE: contrib/libxmp/src/lfo.c
function get_lfo_mod (line 39) | static int get_lfo_mod(struct context_data *ctx, struct lfo *lfo)
function get_lfo_st3 (line 71) | static int get_lfo_st3(struct context_data *ctx, struct lfo *lfo)
function get_lfo_ft2 (line 90) | static int get_lfo_ft2(struct context_data *ctx, struct lfo *lfo)
function get_lfo_it (line 107) | static int get_lfo_it(struct context_data *ctx, struct lfo *lfo)
function libxmp_lfo_get (line 117) | int libxmp_lfo_get(struct context_data *ctx, struct lfo *lfo, int is_vib...
function libxmp_lfo_update (line 140) | void libxmp_lfo_update(struct lfo *lfo)
function libxmp_lfo_set_phase (line 146) | void libxmp_lfo_set_phase(struct lfo *lfo, int phase)
function libxmp_lfo_set_depth (line 151) | void libxmp_lfo_set_depth(struct lfo *lfo, int depth)
function libxmp_lfo_set_rate (line 156) | void libxmp_lfo_set_rate(struct lfo *lfo, int rate)
function libxmp_lfo_set_waveform (line 161) | void libxmp_lfo_set_waveform(struct lfo *lfo, int type)
FILE: contrib/libxmp/src/lfo.h
type lfo (line 6) | struct lfo {
type context_data (line 13) | struct context_data
type lfo (line 13) | struct lfo
type lfo (line 14) | struct lfo
type lfo (line 15) | struct lfo
type lfo (line 16) | struct lfo
type lfo (line 17) | struct lfo
type lfo (line 18) | struct lfo
FILE: contrib/libxmp/src/list.h
type list_head (line 16) | struct list_head {
function __list_add (line 35) | static inline void __list_add(struct list_head *_new,
function list_add (line 53) | static inline void list_add(struct list_head *_new, struct list_head *head)
function list_add_tail (line 66) | static inline void list_add_tail(struct list_head *_new, struct list_hea...
function __list_del (line 78) | static inline void __list_del(struct list_head * prev,
function list_del (line 89) | static inline void list_del(struct list_head *entry)
function list_empty (line 98) | static inline int list_empty(struct list_head *head)
function list_splice (line 108) | static inline void list_splice(struct list_head *list, struct list_head ...
FILE: contrib/libxmp/src/load.c
type context_data (line 41) | struct context_data
type context_data (line 42) | struct context_data
type context_data (line 43) | struct context_data
function set_md5sum (line 48) | static void set_md5sum(HIO_HANDLE *f, unsigned char *digest)
function test_module (line 98) | static int test_module(struct xmp_test_info *info, HIO_HANDLE *h)
function xmp_test_module (line 135) | int xmp_test_module(const char *path, struct xmp_test_info *info)
function xmp_test_module_from_memory (line 175) | int xmp_test_module_from_memory(const void *mem, long size, struct xmp_t...
function xmp_test_module_from_file (line 193) | int xmp_test_module_from_file(void *file, struct xmp_test_info *info)
function xmp_test_module_from_callbacks (line 223) | int xmp_test_module_from_callbacks(void *priv, struct xmp_callbacks call...
function load_module (line 238) | static int load_module(xmp_context opaque, HIO_HANDLE *h)
function xmp_load_module (line 339) | int xmp_load_module(xmp_context opaque, const char *path)
function xmp_load_module_from_memory (line 418) | int xmp_load_module_from_memory(xmp_context opaque, const void *mem, lon...
function xmp_load_module_from_file (line 447) | int xmp_load_module_from_file(xmp_context opaque, void *file, long size)
function xmp_load_module_from_callbacks (line 472) | int xmp_load_module_from_callbacks(xmp_context opaque, void *priv,
function xmp_release_module (line 498) | void xmp_release_module(xmp_context opaque)
function xmp_scan_module (line 572) | void xmp_scan_module(xmp_context opaque)
FILE: contrib/libxmp/src/load_helpers.c
type module_quirk (line 35) | struct module_quirk {
type module_quirk (line 41) | struct module_quirk
function module_quirks (line 232) | static void module_quirks(struct context_data *ctx)
function check_envelope (line 264) | static void check_envelope(struct xmp_envelope *env)
function clamp_volume_envelope (line 282) | static void clamp_volume_envelope(struct module_data *m, struct xmp_enve...
function libxmp_load_prologue (line 294) | void libxmp_load_prologue(struct context_data *ctx)
function libxmp_load_epilogue (line 340) | void libxmp_load_epilogue(struct context_data *ctx)
function libxmp_prepare_scan (line 424) | int libxmp_prepare_scan(struct context_data *ctx)
function libxmp_free_scan (line 466) | void libxmp_free_scan(struct context_data *ctx)
function libxmp_set_player_mode (line 486) | int libxmp_set_player_mode(struct context_data *ctx)
FILE: contrib/libxmp/src/loaders/669_load.c
type module_data (line 27) | struct module_data
type format_loader (line 29) | struct format_loader
function c669_test (line 35) | static int c669_test(HIO_HANDLE *f, char *t, const int start)
type c669_file_header (line 60) | struct c669_file_header {
type c669_instrument_header (line 71) | struct c669_instrument_header {
function c669_load (line 93) | static int c669_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/amf_load.c
type module_data (line 37) | struct module_data
type format_loader (line 39) | struct format_loader
function amf_test (line 45) | static int amf_test(HIO_HANDLE * f, char *t, const int start)
function amf_load (line 66) | static int amf_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/asylum_load.c
type module_data (line 31) | struct module_data
type format_loader (line 33) | struct format_loader
function asylum_test (line 39) | static int asylum_test(HIO_HANDLE *f, char *t, const int start)
function asylum_load (line 54) | static int asylum_load(struct module_data *m, HIO_HANDLE *f, const int s...
FILE: contrib/libxmp/src/loaders/common.c
function libxmp_init_instrument (line 35) | int libxmp_init_instrument(struct module_data *m)
function libxmp_realloc_samples (line 72) | int libxmp_realloc_samples(struct module_data *m, int new_size)
function libxmp_alloc_subinstrument (line 117) | int libxmp_alloc_subinstrument(struct xmp_module *mod, int i, int num)
function libxmp_init_pattern (line 129) | int libxmp_init_pattern(struct xmp_module *mod)
function libxmp_alloc_pattern (line 142) | int libxmp_alloc_pattern(struct xmp_module *mod, int num)
function libxmp_alloc_track (line 156) | int libxmp_alloc_track(struct xmp_module *mod, int num, int rows)
function libxmp_alloc_tracks_in_pattern (line 172) | int libxmp_alloc_tracks_in_pattern(struct xmp_module *mod, int num)
function libxmp_alloc_pattern_tracks (line 190) | int libxmp_alloc_pattern_tracks(struct xmp_module *mod, int num, int rows)
function libxmp_alloc_pattern_tracks_long (line 211) | int libxmp_alloc_pattern_tracks_long(struct xmp_module *mod, int num, in...
type xmp_module (line 229) | struct xmp_module
function libxmp_read_title (line 254) | void libxmp_read_title(HIO_HANDLE *f, char *t, int s)
function libxmp_test_name (line 273) | int libxmp_test_name(const uint8 *s, int n, int flags)
function libxmp_copy_name_for_fopen (line 293) | int libxmp_copy_name_for_fopen(char *dest, const char *name, int n)
function libxmp_decode_noisetracker_event (line 365) | void libxmp_decode_noisetracker_event(struct xmp_event *event, const uin...
function libxmp_decode_protracker_event (line 383) | void libxmp_decode_protracker_event(struct xmp_event *event, const uint8...
function libxmp_disable_continue_fx (line 399) | void libxmp_disable_continue_fx(struct xmp_event *event)
function libxmp_check_filename_case (line 432) | int libxmp_check_filename_case(const char *dir, const char *name, char *...
function libxmp_check_filename_case (line 447) | int libxmp_check_filename_case(const char *dir, const char *name, char *...
type module_data (line 475) | struct module_data
function libxmp_find_instrument_file (line 488) | int libxmp_find_instrument_file(struct module_data *m, char *path_dest,
function libxmp_set_type (line 517) | void libxmp_set_type(struct module_data *m, const char *fmt, ...)
function schism_tracker_date (line 527) | static int schism_tracker_date(int year, int month, int day)
function libxmp_schism_tracker_string (line 545) | void libxmp_schism_tracker_string(char *buf, size_t size, int s_ver, int...
function libxmp_apply_mpt_preamp (line 591) | void libxmp_apply_mpt_preamp(struct module_data *m)
FILE: contrib/libxmp/src/loaders/far_load.c
type far_header (line 32) | struct far_header {
type far_header2 (line 46) | struct far_header2 {
type far_instrument (line 54) | struct far_instrument {
type far_event (line 65) | struct far_event {
type module_data (line 77) | struct module_data
type format_loader (line 79) | struct format_loader
function far_test (line 85) | static int far_test(HIO_HANDLE *f, char *t, const int start)
function far_translate_effect (line 96) | static void far_translate_effect(struct xmp_event *event, int fx, int pa...
function far_read_text (line 188) | static void far_read_text(char *dest, size_t textlen, HIO_HANDLE *f)
function far_load (line 215) | static int far_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/flt_load.c
type module_data (line 29) | struct module_data
type format_loader (line 31) | struct format_loader
function flt_test (line 37) | static int flt_test(HIO_HANDLE * f, char *t, const int start)
type am_instrument (line 80) | struct am_instrument {
function is_am_instrument (line 97) | static int is_am_instrument(HIO_HANDLE *nt, int i)
function read_am_instrument (line 114) | static int read_am_instrument(struct module_data *m, HIO_HANDLE *nt, int i)
function flt_load (line 293) | static int flt_load(struct module_data *m, HIO_HANDLE * f, const int start)
FILE: contrib/libxmp/src/loaders/gdm_load.c
type module_data (line 36) | struct module_data
type format_loader (line 38) | struct format_loader
function gdm_test (line 44) | static int gdm_test(HIO_HANDLE *f, char *t, const int start)
function fix_effect (line 61) | void fix_effect(uint8 *fxt, uint8 *fxp)
function gdm_load (line 174) | static int gdm_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/hmn_load.c
type module_data (line 79) | struct module_data
type format_loader (line 81) | struct format_loader
function hmn_test (line 93) | static int hmn_test(HIO_HANDLE * f, char *t, const int start)
type mupp (line 109) | struct mupp {
function hmn_load (line 116) | static int hmn_load(struct module_data *m, HIO_HANDLE * f, const int start)
FILE: contrib/libxmp/src/loaders/ice_load.c
type module_data (line 31) | struct module_data
type format_loader (line 33) | struct format_loader
function ice_test (line 39) | static int ice_test(HIO_HANDLE * f, char *t, const int start)
type ice_ins (line 54) | struct ice_ins {
type ice_header (line 63) | struct ice_header {
function ice_load (line 72) | static int ice_load(struct module_data *m, HIO_HANDLE * f, const int start)
FILE: contrib/libxmp/src/loaders/iff.c
type iff_data (line 29) | struct iff_data {
function iff_process (line 35) | static int iff_process(iff_handle opaque, struct module_data *m, char *i...
function iff_chunk (line 66) | static int iff_chunk(iff_handle opaque, struct module_data *m, HIO_HANDL...
function iff_handle (line 129) | iff_handle libxmp_iff_new(void)
function libxmp_iff_load (line 145) | int libxmp_iff_load(iff_handle opaque, struct module_data *m, HIO_HANDLE...
function libxmp_iff_register (line 160) | int libxmp_iff_register(iff_handle opaque, const char *id,
function libxmp_iff_release (line 184) | void libxmp_iff_release(iff_handle opaque)
function libxmp_iff_id_size (line 203) | void libxmp_iff_id_size(iff_handle opaque, int n)
function libxmp_iff_set_quirk (line 210) | void libxmp_iff_set_quirk(iff_handle opaque, int i)
FILE: contrib/libxmp/src/loaders/iff.h
type iff_header (line 20) | struct iff_header {
type iff_info (line 26) | struct iff_info {
type module_data (line 33) | struct module_data
type module_data (line 36) | struct module_data
FILE: contrib/libxmp/src/loaders/it.h
type it_file_header (line 79) | struct it_file_header {
type it_instrument1_header (line 105) | struct it_instrument1_header {
type it_instrument2_header (line 128) | struct it_instrument2_header {
type it_envelope_node (line 154) | struct it_envelope_node {
type it_envelope (line 159) | struct it_envelope {
type it_sample_header (line 170) | struct it_sample_header {
FILE: contrib/libxmp/src/loaders/it_load.c
type module_data (line 38) | struct module_data
type format_loader (line 40) | struct format_loader
function it_test (line 46) | static int it_test(HIO_HANDLE *f, char *t, const int start)
function xlat_fx (line 96) | static void xlat_fx(int c, struct xmp_event *e, uint8 *last_fxp, int new...
function xlat_volfx (line 197) | static void xlat_volfx(struct xmp_event *event)
function fix_name (line 245) | static void fix_name(uint8 *s, int l)
function load_it_midi_config (line 261) | static int load_it_midi_config(struct module_data *m, HIO_HANDLE *f)
function read_envelope (line 289) | static int read_envelope(struct xmp_envelope *ei, struct it_envelope *env,
function identify_tracker (line 344) | static void identify_tracker(struct module_data *m, struct it_file_heade...
function load_old_it_instrument (line 447) | static int load_old_it_instrument(struct xmp_instrument *xxi, HIO_HANDLE...
function load_new_it_instrument (line 577) | static int load_new_it_instrument(struct xmp_instrument *xxi, HIO_HANDLE...
function force_sample_length (line 732) | static void force_sample_length(struct xmp_sample *xxs, struct extra_sam...
type xmp_sample (line 751) | struct xmp_sample
type it_sample_header (line 752) | struct it_sample_header
function load_it_sample (line 793) | static int load_it_sample(struct module_data *m, int i, int start,
function load_it_pattern (line 1003) | static int load_it_pattern(struct module_data *m, int i, int new_fx,
function it_load (line 1139) | static int it_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/itsex.c
type it_stream (line 16) | struct it_stream
function uint32 (line 25) | static inline uint32 read_bits(struct it_stream *in, int n)
function init_block (line 67) | static inline int init_block(struct it_stream *in, uint8 *tmp, int tmplen,
function itsex_decompress8 (line 90) | int itsex_decompress8(HIO_HANDLE *src, uint8 *dst, int len,
function itsex_decompress16 (line 186) | int itsex_decompress16(HIO_HANDLE *src, int16 *dst, int len,
FILE: contrib/libxmp/src/loaders/loader.h
type module_data (line 29) | struct module_data
type module_data (line 30) | struct module_data
type xmp_module (line 31) | struct xmp_module
type xmp_module (line 32) | struct xmp_module
type xmp_module (line 33) | struct xmp_module
type xmp_module (line 34) | struct xmp_module
type xmp_module (line 35) | struct xmp_module
type xmp_module (line 36) | struct xmp_module
type xmp_module (line 38) | struct xmp_module
type xmp_module (line 40) | struct xmp_module
type xmp_module (line 46) | struct xmp_module
type xmp_event (line 47) | struct xmp_event
type xmp_event (line 48) | struct xmp_event
type xmp_event (line 49) | struct xmp_event
type module_data (line 51) | struct module_data
type module_data (line 52) | struct module_data
type module_data (line 53) | struct module_data
type xmp_sample (line 54) | struct xmp_sample
type xmp_sample (line 55) | struct xmp_sample
type module_data (line 58) | struct module_data
FILE: contrib/libxmp/src/loaders/med.h
type PlaySeq (line 27) | struct PlaySeq {
type MMD0sample (line 35) | struct MMD0sample {
type MMD0song (line 44) | struct MMD0song {
type MMD2song (line 75) | struct MMD2song {
type MMD0 (line 109) | struct MMD0 {
type MMD0Block (line 133) | struct MMD0Block {
type BlockCmdPageTable (line 138) | struct BlockCmdPageTable {
type BlockInfo (line 145) | struct BlockInfo {
type MMD1Block (line 154) | struct MMD1Block {
type InstrHdr (line 161) | struct InstrHdr {
type SynthWF (line 171) | struct SynthWF {
type SynthInstr (line 177) | struct SynthInstr {
type InstrExt (line 214) | struct InstrExt {
type MMDInfo (line 236) | struct MMDInfo {
type MMDARexxTrigCmd (line 245) | struct MMDARexxTrigCmd {
type MMDARexx (line 259) | struct MMDARexx {
type MMDMIDICmd3x (line 267) | struct MMDMIDICmd3x {
type MMDInstrInfo (line 277) | struct MMDInstrInfo {
type MMD0exp (line 281) | struct MMD0exp {
type NotationInfo (line 306) | struct NotationInfo {
type MMDDumpData (line 319) | struct MMDDumpData {
type MMDDump (line 325) | struct MMDDump {
type xmp_event (line 335) | struct xmp_event
type module_data (line 336) | struct module_data
type SynthInstr (line 336) | struct SynthInstr
type module_data (line 338) | struct module_data
type MMD0exp (line 339) | struct MMD0exp
type InstrExt (line 339) | struct InstrExt
type MMD0sample (line 339) | struct MMD0sample
type module_data (line 340) | struct module_data
type module_data (line 343) | struct module_data
type module_data (line 344) | struct module_data
type module_data (line 345) | struct module_data
type MMD0exp (line 345) | struct MMD0exp
FILE: contrib/libxmp/src/loaders/med2_load.c
type module_data (line 34) | struct module_data
type format_loader (line 36) | struct format_loader
function med2_test (line 43) | static int med2_test(HIO_HANDLE *f, char *t, const int start)
function med2_load (line 53) | static int med2_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/med3_load.c
type module_data (line 35) | struct module_data
type format_loader (line 37) | struct format_loader
function med3_test (line 43) | static int med3_test(HIO_HANDLE *f, char *t, const int start)
function uint8 (line 70) | static uint8 get_nibble(uint8 *mem, uint16 *nbnum)
function uint16 (line 83) | static uint16 get_nibbles(uint8 *mem, uint16 *nbnum, uint8 nbs)
function unpack_block (line 95) | static int unpack_block(struct module_data *m, uint16 bnum, uint8 *from,...
function med3_load (line 247) | static int med3_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/med4_load.c
type module_data (line 37) | struct module_data
type format_loader (line 39) | struct format_loader
function med4_test (line 45) | static int med4_test(HIO_HANDLE *f, char *t, const int start)
function fix_effect (line 55) | static void fix_effect(struct xmp_event *event, int hexvol)
type stream (line 109) | struct stream {
function stream_init (line 115) | static inline void stream_init(HIO_HANDLE* f, struct stream* s)
function stream_read4 (line 121) | static inline unsigned stream_read4(struct stream* s)
function stream_read8 (line 132) | static inline unsigned stream_read8(struct stream* s)
function stream_read12 (line 139) | static inline unsigned stream_read12(struct stream* s)
function uint16 (line 147) | static inline uint16 stream_read16(struct stream* s)
function uint16 (line 156) | static inline uint16 stream_read_aligned16(struct stream* s, int bits)
type temp_inst (line 170) | struct temp_inst {
function med4_sample_check (line 178) | static int med4_sample_check(struct module_data *m, int pos, int needed)
function med4_load_sampled_instrument (line 189) | static int med4_load_sampled_instrument(HIO_HANDLE *f, struct module_dat...
function med4_load_synth_instrument (line 251) | static int med4_load_synth_instrument(HIO_HANDLE *f, struct module_data *m,
function med4_load_instrument (line 417) | static int med4_load_instrument(HIO_HANDLE *f, struct module_data *m,
function med4_load_external_instrument (line 445) | static int med4_load_external_instrument(HIO_HANDLE *f, struct module_da...
function med4_load (line 491) | static int med4_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/mmd1_load.c
type module_data (line 32) | struct module_data
type format_loader (line 34) | struct format_loader
function mmd1_test (line 40) | static int mmd1_test(HIO_HANDLE *f, char *t, const int start)
function mmd1_load (line 68) | static int mmd1_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/mmd3_load.c
type module_data (line 28) | struct module_data
type format_loader (line 30) | struct format_loader
function mmd3_test (line 36) | static int mmd3_test(HIO_HANDLE *f, char *t, const int start)
function mmd3_load (line 64) | static int mmd3_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/mmd_common.c
function mmd_convert_tempo (line 47) | int mmd_convert_tempo(int tempo, int bpm_on, int med_8ch)
function mmd_xlat_fx (line 83) | void mmd_xlat_fx(struct xmp_event *event, int bpm_on, int bpmlen, int me...
type mmd_instrument_info (line 399) | struct mmd_instrument_info
function mmd_load_instrument_common (line 412) | static void mmd_load_instrument_common(
function mmd_set_default_pitch_note (line 487) | static void mmd_set_default_pitch_note(struct xmp_instrument *xxi,
function mmd_alloc_tables (line 501) | int mmd_alloc_tables(struct module_data *m, int i, struct SynthInstr *sy...
function mmd_load_hybrid_instrument (line 523) | static int mmd_load_hybrid_instrument(HIO_HANDLE *f, struct module_data ...
function mmd_load_synth_instrument (line 643) | static int mmd_load_synth_instrument(HIO_HANDLE *f, struct module_data *...
function mmd_load_sampled_instrument (line 736) | static int mmd_load_sampled_instrument(HIO_HANDLE *f, struct module_data...
function mmd_load_iffoct_instrument (line 827) | static int mmd_load_iffoct_instrument(HIO_HANDLE *f, struct module_data ...
function mmd_load_instrument (line 906) | int mmd_load_instrument(HIO_HANDLE *f, struct module_data *m, int i, int...
function med_load_external_instrument (line 989) | int med_load_external_instrument(HIO_HANDLE *f, struct module_data *m, i...
function mmd_set_bpm (line 1029) | void mmd_set_bpm(struct module_data *m, int med_8ch, int deftempo,
function mmd_info_text (line 1047) | void mmd_info_text(HIO_HANDLE *f, struct module_data *m, int offset)
function mmd_tracker_version (line 1073) | int mmd_tracker_version(struct module_data *m, int mmdver, int mmdc,
FILE: contrib/libxmp/src/loaders/mod.h
type mod_instrument (line 26) | struct mod_instrument {
type mod_header (line 35) | struct mod_header {
type st_header (line 50) | struct st_header {
FILE: contrib/libxmp/src/loaders/mod_load.c
type mod_magic (line 46) | struct mod_magic {
type mod_magic (line 73) | struct mod_magic
function tracker_is_vblank (line 95) | static int tracker_is_vblank(int id)
type module_data (line 108) | struct module_data
type format_loader (line 110) | struct format_loader
function validate_pattern (line 121) | static int validate_pattern(uint8 *buf)
function mod_test (line 139) | static int mod_test(HIO_HANDLE * f, char *t, const int start)
function is_st_ins (line 279) | static int is_st_ins(const char *s)
function get_tracker_id (line 293) | static int get_tracker_id(struct module_data *m, struct mod_header *mh, ...
function mod_load (line 460) | static int mod_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/mtm_load.c
type mtm_file_header (line 25) | struct mtm_file_header {
type mtm_instrument_header (line 40) | struct mtm_instrument_header {
type module_data (line 51) | struct module_data
type format_loader (line 53) | struct format_loader
function mtm_test (line 59) | static int mtm_test(HIO_HANDLE *f, char *t, const int start)
function mtm_load (line 75) | static int mtm_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/okt_load.c
type module_data (line 32) | struct module_data
type format_loader (line 34) | struct format_loader
function okt_test (line 40) | static int okt_test(HIO_HANDLE *f, char *t, const int start)
type local_data (line 61) | struct local_data {
function okt_translate_effect (line 107) | static int okt_translate_effect(struct xmp_event *event, int fxt, int fxp)
function get_cmod (line 138) | static int get_cmod(struct module_data *m, int size, HIO_HANDLE *f, void...
function get_samp (line 169) | static int get_samp(struct module_data *m, int size, HIO_HANDLE *f, void...
function get_spee (line 226) | static int get_spee(struct module_data *m, int size, HIO_HANDLE *f, void...
function get_slen (line 236) | static int get_slen(struct module_data *m, int size, HIO_HANDLE *f, void...
function get_plen (line 253) | static int get_plen(struct module_data *m, int size, HIO_HANDLE *f, void...
function get_patt (line 268) | static int get_patt(struct module_data *m, int size, HIO_HANDLE *f, void...
function get_pbod (line 278) | static int get_pbod(struct module_data *m, int size, HIO_HANDLE *f, void...
function get_sbod (line 338) | static int get_sbod(struct module_data *m, int size, HIO_HANDLE *f, void...
function okt_load (line 363) | static int okt_load(struct module_data *m, HIO_HANDLE * f, const int start)
FILE: contrib/libxmp/src/loaders/s3m.h
type s3m_file_header (line 72) | struct s3m_file_header {
type s3m_instrument_header (line 95) | struct s3m_instrument_header {
type s3m_adlib_header (line 117) | struct s3m_adlib_header {
FILE: contrib/libxmp/src/loaders/s3m_load.c
type module_data (line 70) | struct module_data
type format_loader (line 72) | struct format_loader
function s3m_test (line 78) | static int s3m_test(HIO_HANDLE *f, char *t, const int start)
function xlat_fx (line 129) | static void xlat_fx(int c, struct xmp_event *e)
function s3m_load (line 207) | static int s3m_load(struct module_data *m, HIO_HANDLE * f, const int start)
FILE: contrib/libxmp/src/loaders/sample.c
function convert_7bit_to_8bit (line 58) | static void convert_7bit_to_8bit(uint8 *p, int l)
function convert_vidc_to_linear (line 66) | static void convert_vidc_to_linear(uint8 *p, int l)
function adpcm4_decoder (line 79) | static void adpcm4_decoder(uint8 *inp, uint8 *outp, char *tab, int len)
function convert_delta (line 99) | static void convert_delta(uint8 *p, int frames, int is_16bit, int channels)
function convert_signal (line 125) | static void convert_signal(uint8 *p, int l, int r)
function convert_endian (line 139) | static void convert_endian(uint8 *p, int l)
function convert_stereo_interleaved (line 154) | static void convert_stereo_interleaved(void * LIBXMP_RESTRICT _out,
function libxmp_load_sample (line 181) | int libxmp_load_sample(struct module_data *m, HIO_HANDLE *f, int flags, ...
function libxmp_free_sample (line 428) | void libxmp_free_sample(struct xmp_sample *s)
FILE: contrib/libxmp/src/loaders/st_load.c
type module_data (line 32) | struct module_data
type format_loader (line 34) | struct format_loader
function st_expected_size (line 57) | static int st_expected_size(int smp_size, int pat)
function st_test (line 62) | static int st_test(HIO_HANDLE *f, char *t, const int start)
function st_load (line 264) | static int st_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/stm_load.c
type stm_instrument_header (line 29) | struct stm_instrument_header {
type stm_file_subheader_v1 (line 45) | struct stm_file_subheader_v1 {
type stm_file_subheader_v2 (line 57) | struct stm_file_subheader_v2 {
type stm_file_header (line 64) | struct stm_file_header {
type module_data (line 79) | struct module_data
type format_loader (line 81) | struct format_loader
function stm_test (line 87) | static int stm_test(HIO_HANDLE * f, char *t, const int start)
function stm_load (line 160) | static int stm_load(struct module_data *m, HIO_HANDLE * f, const int start)
FILE: contrib/libxmp/src/loaders/ult_load.c
type module_data (line 37) | struct module_data
type format_loader (line 39) | struct format_loader
function ult_test (line 45) | static int ult_test(HIO_HANDLE *f, char *t, const int start)
type ult_header (line 64) | struct ult_header {
type ult_header2 (line 70) | struct ult_header2 {
type ult_instrument (line 76) | struct ult_instrument {
type ult_event (line 89) | struct ult_event {
function ult_translate_effect (line 98) | static void ult_translate_effect(uint8 *fxt, uint8 *fxp)
function ult_load (line 126) | static int ult_load(struct module_data *m, HIO_HANDLE *f, const int start)
FILE: contrib/libxmp/src/loaders/xm.h
type xm_file_header (line 23) | struct xm_file_header {
type xm_pattern_header (line 41) | struct xm_pattern_header {
type xm_instrument_header (line 48) | struct xm_instrument_header {
type xm_instrument (line 56) | struct xm_instrument {
type xm_sample_header (line 80) | struct xm_sample_header {
type xm_event (line 93) | struct xm_event {
FILE: contrib/libxmp/src/loaders/xm_load.c
type module_data (line 43) | struct module_data
type format_loader (line 45) | struct format_loader
function xm_test (line 51) | static int xm_test(HIO_HANDLE *f, char *t, const int start)
function load_xm_pattern (line 66) | static int load_xm_pattern(struct module_data *m, int num, int version,
function load_patterns (line 328) | static int load_patterns(struct module_data *m, int version, HIO_HANDLE *f)
function is_ogg_sample (line 390) | static int is_ogg_sample(HIO_HANDLE *f, struct xmp_sample *xxs)
function oggdec (line 413) | static int oggdec(struct module_data *m, HIO_HANDLE *f, struct xmp_sampl...
function load_instruments (line 467) | static int load_instruments(struct module_data *m, int version, HIO_HAND...
function xm_load (line 779) | static int xm_load(struct module_data *m, HIO_HANDLE * f, const int start)
FILE: contrib/libxmp/src/md5.c
function MD5Transform (line 60) | static void MD5Transform(uint32 state[4], const uint8 block[MD5_BLOCK_LE...
function MD5Init (line 159) | void MD5Init(MD5_CTX *ctx)
function MD5Update (line 172) | void MD5Update(MD5_CTX *ctx, const unsigned char *input, size_t len)
function MD5Pad (line 209) | static void MD5Pad(MD5_CTX *ctx)
function MD5Final (line 229) | void MD5Final(unsigned char digest[MD5_DIGEST_LENGTH], MD5_CTX *ctx)
FILE: contrib/libxmp/src/md5.h
type MD5_CTX (line 22) | typedef struct MD5Context {
FILE: contrib/libxmp/src/mdataio.h
function CAN_READ (line 7) | static inline ptrdiff_t CAN_READ(MFILE *m)
function uint8 (line 15) | static inline uint8 mread8(MFILE *m, int *err)
function int8 (line 25) | static inline int8 mread8s(MFILE *m, int *err)
function uint16 (line 34) | static inline uint16 mread16l(MFILE *m, int *err)
function uint16 (line 49) | static inline uint16 mread16b(MFILE *m, int *err)
function uint32 (line 64) | static inline uint32 mread24l(MFILE *m, int *err)
function uint32 (line 79) | static inline uint32 mread24b(MFILE *m, int *err)
function uint32 (line 94) | static inline uint32 mread32l(MFILE *m, int *err)
function uint32 (line 109) | static inline uint32 mread32b(MFILE *m, int *err)
FILE: contrib/libxmp/src/med_extras.c
function libxmp_med_change_period (line 70) | int libxmp_med_change_period(struct context_data *ctx, struct channel_da...
function libxmp_med_linear_bend (line 95) | int libxmp_med_linear_bend(struct context_data *ctx, struct channel_data...
function libxmp_med_play_extras (line 123) | void libxmp_med_play_extras(struct context_data *ctx, struct channel_dat...
function libxmp_med_new_instrument_extras (line 345) | int libxmp_med_new_instrument_extras(struct xmp_instrument *xxi)
function libxmp_med_new_channel_extras (line 355) | int libxmp_med_new_channel_extras(struct channel_data *xc)
function libxmp_med_reset_channel_extras (line 365) | void libxmp_med_reset_channel_extras(struct channel_data *xc)
function libxmp_med_release_channel_extras (line 370) | void libxmp_med_release_channel_extras(struct channel_data *xc)
function libxmp_med_new_module_extras (line 376) | int libxmp_med_new_module_extras(struct module_data *m)
function libxmp_med_release_module_extras (line 398) | void libxmp_med_release_module_extras(struct module_data *m)
function libxmp_med_extras_process_fx (line 422) | void libxmp_med_extras_process_fx(struct context_data *ctx, struct chann...
function libxmp_med_hold_hack (line 433) | void libxmp_med_hold_hack(struct context_data *ctx, int pat, int chn, in...
FILE: contrib/libxmp/src/med_extras.h
type med_instrument_extras (line 6) | struct med_instrument_extras {
type med_channel_extras (line 15) | struct med_channel_extras {
type med_module_extras (line 44) | struct med_module_extras {
type context_data (line 65) | struct context_data
type channel_data (line 65) | struct channel_data
type context_data (line 66) | struct context_data
type channel_data (line 66) | struct channel_data
type channel_data (line 67) | struct channel_data
type context_data (line 68) | struct context_data
type channel_data (line 68) | struct channel_data
type xmp_instrument (line 69) | struct xmp_instrument
type channel_data (line 70) | struct channel_data
type channel_data (line 71) | struct channel_data
type channel_data (line 72) | struct channel_data
type module_data (line 73) | struct module_data
type module_data (line 74) | struct module_data
type context_data (line 75) | struct context_data
type channel_data (line 75) | struct channel_data
FILE: contrib/libxmp/src/memio.c
function CAN_READ (line 26) | static inline ptrdiff_t CAN_READ(MFILE *m)
function mgetc (line 32) | int mgetc(MFILE *m)
function mread (line 39) | size_t mread(void *buf, size_t size, size_t num, MFILE *m)
function mseek (line 62) | int mseek(MFILE *m, long offset, int whence)
function mtell (line 85) | long mtell(MFILE *m)
function meof (line 90) | int meof(MFILE *m)
function MFILE (line 95) | MFILE *mopen(void *ptr, long size, int free_after_use)
function MFILE (line 111) | MFILE *mcopen(const void *ptr, long size)
function mclose (line 127) | int mclose(MFILE *m)
FILE: contrib/libxmp/src/memio.h
type MFILE (line 7) | typedef struct {
FILE: contrib/libxmp/src/mix_all.c
function MIXER (line 255) | MIXER(monoout_mono_8bit_nearest)
function MIXER (line 265) | MIXER(monoout_mono_16bit_nearest)
function MIXER (line 275) | MIXER(monoout_stereo_8bit_nearest)
function MIXER (line 286) | MIXER(monoout_stereo_16bit_nearest)
function MIXER (line 297) | MIXER(stereoout_mono_8bit_nearest)
function MIXER (line 307) | MIXER(stereoout_mono_16bit_nearest)
function MIXER (line 317) | MIXER(stereoout_stereo_8bit_nearest)
function MIXER (line 328) | MIXER(stereoout_stereo_16bit_nearest)
function MIXER (line 344) | MIXER(monoout_mono_8bit_linear)
function MIXER (line 355) | MIXER(monoout_mono_16bit_linear)
function MIXER (line 366) | MIXER(monoout_stereo_8bit_linear)
function MIXER (line 379) | MIXER(monoout_stereo_16bit_linear)
function MIXER (line 392) | MIXER(stereoout_mono_8bit_linear)
function MIXER (line 403) | MIXER(stereoout_mono_16bit_linear)
function MIXER (line 414) | MIXER(stereoout_stereo_8bit_linear)
function MIXER (line 427) | MIXER(stereoout_stereo_16bit_linear)
function MIXER (line 442) | MIXER(monoout_mono_8bit_linear_filter)
function MIXER (line 458) | MIXER(monoout_mono_16bit_linear_filter)
function MIXER (line 474) | MIXER(monoout_stereo_8bit_linear_filter)
function MIXER (line 490) | MIXER(monoout_stereo_16bit_linear_filter)
function MIXER (line 506) | MIXER(stereoout_mono_8bit_linear_filter)
function MIXER (line 522) | MIXER(stereoout_mono_16bit_linear_filter)
function MIXER (line 538) | MIXER(stereoout_stereo_8bit_linear_filter)
function MIXER (line 554) | MIXER(stereoout_stereo_16bit_linear_filter)
function MIXER (line 576) | MIXER(monoout_mono_8bit_spline)
function MIXER (line 587) | MIXER(monoout_mono_16bit_spline)
function MIXER (line 598) | MIXER(monoout_stereo_8bit_spline)
function MIXER (line 611) | MIXER(monoout_stereo_16bit_spline)
function MIXER (line 624) | MIXER(stereoout_mono_8bit_spline)
function MIXER (line 635) | MIXER(stereoout_mono_16bit_spline)
function MIXER (line 646) | MIXER(stereoout_stereo_8bit_spline)
function MIXER (line 659) | MIXER(stereoout_stereo_16bit_spline)
function MIXER (line 674) | MIXER(monoout_mono_8bit_spline_filter)
function MIXER (line 690) | MIXER(monoout_mono_16bit_spline_filter)
function MIXER (line 706) | MIXER(monoout_stereo_8bit_spline_filter)
function MIXER (line 722) | MIXER(monoout_stereo_16bit_spline_filter)
function MIXER (line 738) | MIXER(stereoout_mono_8bit_spline_filter)
function MIXER (line 754) | MIXER(stereoout_mono_16bit_spline_filter)
function MIXER (line 770) | MIXER(stereoout_stereo_8bit_spline_filter)
function MIXER (line 786) | MIXER(stereoout_stereo_16bit_spline_filter)
FILE: contrib/libxmp/src/mixer.c
type loop_data (line 43) | struct loop_data
type mixer_voice (line 114) | struct mixer_voice
function downmix_int_8bit (line 158) | static void downmix_int_8bit(char *dest, int32 *src, int num, int amp, i...
function downmix_int_16bit (line 179) | static void downmix_int_16bit(int16 *dest, int32 *src, int num, int amp,...
function anticlick (line 198) | static void anticlick(struct mixer_voice *vi)
function do_anticlick (line 206) | static void do_anticlick(struct context_data *ctx, int voc, int32 *buf, ...
function set_sample_end (line 255) | static void set_sample_end(struct context_data *ctx, int voc, int end)
function init_sample_wraparound (line 282) | static void init_sample_wraparound(struct mixer_data *s, struct loop_dat...
function reset_sample_wraparound (line 350) | static void reset_sample_wraparound(struct loop_data *ld)
function has_active_sustain_loop (line 373) | static int has_active_sustain_loop(struct context_data *ctx, struct mixe...
function has_active_loop (line 384) | static int has_active_loop(struct context_data *ctx, struct mixer_voice ...
function adjust_voice_end (line 391) | static void adjust_voice_end(struct context_data *ctx, struct mixer_voic...
function loop_reposition (line 415) | static int loop_reposition(struct context_data *ctx, struct mixer_voice ...
function hotswap_sample (line 453) | static void hotswap_sample(struct context_data *ctx, struct mixer_voice ...
function get_current_sample (line 464) | static void get_current_sample(struct context_data *ctx, struct mixer_vo...
function libxmp_mixer_get_ticksize (line 484) | int libxmp_mixer_get_ticksize(int freq, double time_factor, double rrate...
function libxmp_mixer_prepare (line 507) | void libxmp_mixer_prepare(struct context_data *ctx)
function libxmp_mixer_softmixer (line 531) | void libxmp_mixer_softmixer(struct context_data *ctx)
function libxmp_mixer_voicepos (line 843) | void libxmp_mixer_voicepos(struct context_data *ctx, int voc, double pos...
function libxmp_mixer_getvoicepos (line 894) | double libxmp_mixer_getvoicepos(struct context_data *ctx, int voc)
function libxmp_mixer_setpatch (line 909) | void libxmp_mixer_setpatch(struct context_data *ctx, int voc, int smp, i...
function libxmp_mixer_queuepatch (line 963) | void libxmp_mixer_queuepatch(struct context_data *ctx, int voc, int smp)
function libxmp_mixer_setnote (line 974) | void libxmp_mixer_setnote(struct context_data *ctx, int voc, int note)
function libxmp_mixer_setperiod (line 992) | void libxmp_mixer_setperiod(struct context_data *ctx, int voc, double pe...
function libxmp_mixer_setvol (line 1000) | void libxmp_mixer_setvol(struct context_data *ctx, int voc, int vol)
function libxmp_mixer_release (line 1012) | void libxmp_mixer_release(struct context_data *ctx, int voc, int rel)
function libxmp_mixer_reverse (line 1037) | void libxmp_mixer_reverse(struct context_data *ctx, int voc, int rev)
function libxmp_mixer_seteffect (line 1054) | void libxmp_mixer_seteffect(struct context_data *ctx, int voc, int type,...
function libxmp_mixer_setpan (line 1080) | void libxmp_mixer_setpan(struct context_data *ctx, int voc, int pan)
function libxmp_mixer_numvoices (line 1088) | int libxmp_mixer_numvoices(struct context_data *ctx, int num)
function libxmp_mixer_on (line 1099) | int libxmp_mixer_on(struct context_data *ctx, int rate, int format, int ...
function libxmp_mixer_off (line 1136) | void libxmp_mixer_off(struct context_data *ctx)
FILE: contrib/libxmp/src/mixer.h
type mixer_voice (line 21) | struct mixer_voice {
type context_data (line 74) | struct context_data
type context_data (line 75) | struct context_data
type context_data (line 76) | struct context_data
type context_data (line 77) | struct context_data
type context_data (line 78) | struct context_data
type context_data (line 79) | struct context_data
type context_data (line 80) | struct context_data
type context_data (line 81) | struct context_data
type context_data (line 82) | struct context_data
type context_data (line 83) | struct context_data
type context_data (line 84) | struct context_data
type context_data (line 85) | struct context_data
type context_data (line 86) | struct context_data
type context_data (line 87) | struct context_data
type context_data (line 88) | struct context_data
type context_data (line 89) | struct context_data
FILE: contrib/libxmp/src/period.c
function libxmp_round (line 139) | static inline double libxmp_round(double val)
function libxmp_note_to_period_pt (line 146) | static inline int libxmp_note_to_period_pt(int n, int f)
function libxmp_note_to_period (line 167) | double libxmp_note_to_period(struct context_data *ctx, int n, int f, dou...
function libxmp_note_to_period_mix (line 205) | double libxmp_note_to_period_mix(int n, int b)
function libxmp_period_to_note (line 213) | int libxmp_period_to_note(int p)
function libxmp_period_to_bend (line 223) | int libxmp_period_to_bend(struct context_data *ctx, double p, int n, dou...
function libxmp_c2spd_to_note (line 251) | void libxmp_c2spd_to_note(int c2spd, int *n, int *f)
function libxmp_gus_frequency_steps (line 280) | double libxmp_gus_frequency_steps(int num_steps, int num_channels_active)
FILE: contrib/libxmp/src/period.h
type context_data (line 18) | struct context_data
type context_data (line 21) | struct context_data
FILE: contrib/libxmp/src/player.c
type retrig_control (line 51) | struct retrig_control
function check_envelope_end (line 69) | static int check_envelope_end(struct xmp_envelope *env, int x)
function get_envelope (line 89) | static int get_envelope(struct xmp_envelope *env, int x, int def)
function update_envelope_generic (line 123) | static int update_envelope_generic(struct xmp_envelope *env, int x, int ...
function update_envelope_xm (line 190) | static int update_envelope_xm(struct xmp_envelope *env, int x, int release)
function update_envelope_it (line 242) | static int update_envelope_it(struct xmp_envelope *env, int x, int relea...
function update_envelope (line 278) | static int update_envelope(struct context_data *ctx, struct xmp_envelope...
function check_envelope_fade (line 310) | static int check_envelope_fade(struct xmp_envelope *env, int x)
type midi_stream (line 338) | struct midi_stream
function midi_nibble (line 345) | static int midi_nibble(struct context_data *ctx, struct channel_data *xc,
function midi_byte (line 420) | static int midi_byte(struct context_data *ctx, struct channel_data *xc,
function apply_midi_macro_effect (line 428) | static void apply_midi_macro_effect(struct channel_data *xc, int type, i...
function execute_midi_macro (line 440) | static void execute_midi_macro(struct context_data *ctx, struct channel_...
function update_midi_macro (line 493) | static void update_midi_macro(struct context_data *ctx, int chn)
function update_invloop (line 561) | static void update_invloop(struct context_data *ctx, struct channel_data...
function ft2_arpeggio (line 624) | static int ft2_arpeggio(struct context_data *ctx, struct channel_data *xc)
function arpeggio (line 648) | static int arpeggio(struct context_data *ctx, struct channel_data *xc)
function is_first_frame (line 665) | static int is_first_frame(struct context_data *ctx)
function reset_channels (line 682) | static void reset_channels(struct context_data *ctx)
function check_delay (line 756) | static int check_delay(struct context_data *ctx, struct xmp_event *e, in...
function read_row (line 818) | static inline void read_row(struct context_data *ctx, int pat, int row)
function get_channel_vol (line 875) | static inline int get_channel_vol(struct context_data *ctx, int chn)
function tremor_ft2 (line 896) | static int tremor_ft2(struct context_data *ctx, int chn, int finalvol)
function tremor_s3m (line 923) | static int tremor_s3m(struct context_data *ctx, int chn, int finalvol)
function process_volume (line 953) | static void process_volume(struct context_data *ctx, int chn, int act)
function process_frequency (line 1112) | static void process_frequency(struct context_data *ctx, int chn, int act)
function process_pan (line 1329) | static void process_pan(struct context_data *ctx, int chn, int act)
function update_volume (line 1395) | static void update_volume(struct context_data *ctx, int chn)
function update_frequency (line 1482) | static void update_frequency(struct context_data *ctx, int chn)
function update_pan (line 1560) | static void update_pan(struct context_data *ctx, int chn)
function play_channel (line 1580) | static void play_channel(struct context_data *ctx, int chn)
function inject_event (line 1692) | static void inject_event(struct context_data *ctx)
function next_order (line 1713) | static void next_order(struct context_data *ctx)
function next_row (line 1789) | static void next_row(struct context_data *ctx)
function libxmp_player_set_release (line 1833) | void libxmp_player_set_release(struct context_data *ctx, int chn)
function libxmp_player_set_fadeout (line 1841) | void libxmp_player_set_fadeout(struct context_data *ctx, int chn)
function libxmp_get_frame_time (line 1854) | static double libxmp_get_frame_time(struct context_data *ctx)
function update_from_ord_info (line 1863) | static void update_from_ord_info(struct context_data *ctx)
function libxmp_reset_flow (line 1880) | void libxmp_reset_flow(struct context_data *ctx)
function xmp_start_player (line 1899) | int xmp_start_player(xmp_context opaque, int rate, int format)
function check_end_of_module (line 2018) | static void check_end_of_module(struct context_data *ctx)
function xmp_play_frame (line 2035) | int xmp_play_frame(xmp_context opaque)
function xmp_play_buffer (line 2149) | int xmp_play_buffer(xmp_context opaque, void *out_buffer, int size, int ...
function xmp_end_player (line 2206) | void xmp_end_player(xmp_context opaque)
function xmp_get_module_info (line 2240) | void xmp_get_module_info(xmp_context opaque, struct xmp_module_info *info)
function xmp_get_frame_info (line 2257) | void xmp_get_frame_info(xmp_context opaque, struct xmp_frame_info *info)
FILE: contrib/libxmp/src/player.h
type retrig_control (line 24) | struct retrig_control {
type instrument_vibrato (line 84) | struct instrument_vibrato {
type channel_data (line 89) | struct channel_data {
type context_data (line 280) | struct context_data
type channel_data (line 280) | struct channel_data
type xmp_event (line 281) | struct xmp_event
type context_data (line 283) | struct context_data
type xmp_event (line 283) | struct xmp_event
type context_data (line 285) | struct context_data
type flow_control (line 286) | struct flow_control
type context_data (line 287) | struct context_data
type flow_control (line 288) | struct flow_control
type context_data (line 289) | struct context_data
type flow_control (line 290) | struct flow_control
type context_data (line 291) | struct context_data
type flow_control (line 292) | struct flow_control
FILE: contrib/libxmp/src/read_event.c
type xmp_subinstrument (line 35) | struct xmp_subinstrument
type context_data (line 35) | struct context_data
type module_data (line 38) | struct module_data
type xmp_module (line 39) | struct xmp_module
type xmp_instrument (line 40) | struct xmp_instrument
function reset_envelopes (line 58) | static void reset_envelopes(struct context_data *ctx, struct channel_dat...
function reset_envelope_volume (line 75) | static void reset_envelope_volume(struct context_data *ctx,
function reset_envelopes_carry (line 89) | static void reset_envelopes_carry(struct context_data *ctx,
function set_effect_defaults (line 117) | static void set_effect_defaults(struct context_data *ctx, int note,
function set_period (line 173) | static void set_period(struct context_data *ctx, int note,
function set_period_ft2 (line 204) | static void set_period_ft2(struct context_data *ctx, int note,
function read_event_mod (line 235) | static int read_event_mod(struct context_data *ctx, struct xmp_event *e,...
function sustain_check (line 436) | static int sustain_check(struct xmp_envelope *env, int idx)
function read_event_ft2 (line 445) | static int read_event_ft2(struct context_data *ctx, struct xmp_event *e,...
function read_event_st3 (line 798) | static int read_event_st3(struct context_data *ctx, struct xmp_event *e,...
function copy_channel (line 943) | static inline void copy_channel(struct player_data *p, int to, int from)
function has_note_event (line 951) | static inline int has_note_event(struct xmp_event *e)
function check_fadeout (line 956) | static int check_fadeout(struct context_data *ctx, struct channel_data *...
function check_invalid_sample (line 970) | static int check_invalid_sample(struct context_data *ctx, int ins, int key)
function fix_period (line 985) | static void fix_period(struct context_data *ctx, int chn, struct xmp_sub...
function is_same_sid (line 997) | static int is_same_sid(struct context_data *ctx, int chn, int ins, int key)
function read_event_it (line 1009) | static int read_event_it(struct context_data *ctx, struct xmp_event *e, ...
function read_event_med (line 1436) | static int read_event_med(struct context_data *ctx, struct xmp_event *e,...
function read_event_smix (line 1588) | static int read_event_smix(struct context_data *ctx, struct xmp_event *e...
function libxmp_read_event (line 1682) | int libxmp_read_event(struct context_data *ctx, struct xmp_event *e, int...
FILE: contrib/libxmp/src/rng.c
function libxmp_random_step_xorshift32 (line 28) | static unsigned libxmp_random_step_xorshift32(unsigned state)
function libxmp_get_random (line 36) | unsigned libxmp_get_random(struct rng_state *rng, unsigned range)
function libxmp_set_random (line 44) | void libxmp_set_random(struct rng_state *rng, unsigned state)
function libxmp_init_random (line 49) | void libxmp_init_random(struct rng_state *rng)
FILE: contrib/libxmp/src/rng.h
type rng_state (line 32) | struct rng_state
type rng_state (line 33) | struct rng_state
type rng_state (line 34) | struct rng_state
FILE: contrib/libxmp/src/scan.c
function scan_module (line 53) | static int scan_module(struct context_data *ctx, int ep, int chain)
function reset_scan_data (line 676) | static void reset_scan_data(struct context_data *ctx)
function compare_vblank_scan (line 686) | static void compare_vblank_scan(struct context_data *ctx)
function libxmp_get_sequence (line 726) | int libxmp_get_sequence(struct context_data *ctx, int ord)
function libxmp_scan_sequences (line 734) | int libxmp_scan_sequences(struct context_data *ctx)
FILE: contrib/libxmp/src/smix.c
type xmp_instrument (line 30) | struct xmp_instrument
type context_data (line 30) | struct context_data
type smix_data (line 32) | struct smix_data
type module_data (line 33) | struct module_data
type xmp_module (line 34) | struct xmp_module
type xmp_instrument (line 35) | struct xmp_instrument
type xmp_sample (line 50) | struct xmp_sample
type context_data (line 50) | struct context_data
type smix_data (line 52) | struct smix_data
type module_data (line 53) | struct module_data
type xmp_module (line 54) | struct xmp_module
type xmp_sample (line 55) | struct xmp_sample
function xmp_start_smix (line 70) | int xmp_start_smix(xmp_context opaque, int chn, int smp)
function xmp_smix_play_instrument (line 100) | int xmp_smix_play_instrument(xmp_context opaque, int ins, int note, int ...
function xmp_smix_play_sample (line 131) | int xmp_smix_play_sample(xmp_context opaque, int ins, int note, int vol,...
function xmp_smix_channel_pan (line 162) | int xmp_smix_channel_pan(xmp_context opaque, int chn, int pan)
function xmp_smix_load_sample (line 180) | int xmp_smix_load_sample(xmp_context opaque, int num, const char *path)
function xmp_smix_release_sample (line 303) | int xmp_smix_release_sample(xmp_context opaque, int num)
function xmp_end_smix (line 321) | void xmp_end_smix(xmp_context opaque)
FILE: contrib/libxmp/src/virtual.c
type context_data (line 34) | struct context_data
type context_data (line 35) | struct context_data
function libxmp_virt_getroot (line 39) | int libxmp_virt_getroot(struct context_data *ctx, int chn)
function libxmp_virt_resetvoice (line 55) | void libxmp_virt_resetvoice(struct context_data *ctx, int voc, int mute)
function libxmp_virt_on (line 85) | int libxmp_virt_on(struct context_data *ctx, int num)
function libxmp_virt_off (line 155) | void libxmp_virt_off(struct context_data *ctx)
function libxmp_virt_reset (line 180) | void libxmp_virt_reset(struct context_data *ctx)
function free_voice (line 216) | static int free_voice(struct context_data *ctx)
function alloc_voice (line 243) | static int alloc_voice(struct context_data *ctx, int chn)
function map_virt_channel (line 271) | static int map_virt_channel(struct player_data *p, int chn)
function libxmp_virt_mapchannel (line 286) | int libxmp_virt_mapchannel(struct context_data *ctx, int chn)
function libxmp_virt_resetchannel (line 291) | void libxmp_virt_resetchannel(struct context_data *ctx, int chn)
function libxmp_virt_setvol (line 320) | void libxmp_virt_setvol(struct context_data *ctx, int chn, int vol)
function libxmp_virt_release (line 341) | void libxmp_virt_release(struct context_data *ctx, int chn, int rel)
function libxmp_virt_reverse (line 353) | void libxmp_virt_reverse(struct context_data *ctx, int chn, int rev)
function libxmp_virt_setpan (line 365) | void libxmp_virt_setpan(struct context_data *ctx, int chn, int pan)
function libxmp_virt_seteffect (line 377) | void libxmp_virt_seteffect(struct context_data *ctx, int chn, int type, ...
function libxmp_virt_getvoicepos (line 389) | double libxmp_virt_getvoicepos(struct context_data *ctx, int chn)
function libxmp_virt_setsmp (line 403) | void libxmp_virt_setsmp(struct context_data *ctx, int chn, int smp)
function libxmp_virt_setnna (line 428) | void libxmp_virt_setnna(struct context_data *ctx, int chn, int nna)
function check_dct (line 445) | static void check_dct(struct context_data *ctx, int i, int chn, int ins,
function libxmp_virt_setnote (line 483) | void libxmp_virt_setnote(struct context_data *ctx, int chn, int note)
function libxmp_virt_setpatch (line 495) | int libxmp_virt_setpatch(struct context_data *ctx, int chn, int ins, int...
function libxmp_v
Copy disabled (too large)
Download .json
Condensed preview — 1307 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,752K chars).
[
{
"path": ".gitattributes",
"chars": 277,
"preview": ".gitignore merge=union text\ndocs/changelog.txt merge=union text\ndocs/cycles_and_commands.txt text\ndocs/idle_direction_od"
},
{
"path": ".github/workflows/main.yml",
"chars": 11625,
"preview": "name: Regression tests\n\nenv:\n MZXDEPS_DEBIAN_SDL2: \"zlib1g-dev libpng-dev libogg-dev libvorbis-dev libsdl2-dev\"\n MZXD"
},
{
"path": ".gitignore",
"chars": 3400,
"preview": "arch/3ds/*.d\narch/3ds/*.o\narch/3ds/*shbin*\narch/android/deps\narch/android/include\narch/android/project/.eclipse\narch/and"
},
{
"path": ".valgrindrc",
"chars": 85,
"preview": "--memcheck:leak-check=full\n--memcheck:track-origins=yes\n--suppressions=valgrind.supp\n"
},
{
"path": "BUILDING.md",
"chars": 8789,
"preview": "Building MegaZeux\n=================\n\nMegaZeux can currently be built for Microsoft Windows, Linux, macOS,\nNetBSD, FreeBS"
},
{
"path": "LICENSE",
"chars": 17990,
"preview": "\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
},
{
"path": "Makefile",
"chars": 17888,
"preview": "##\n# MegaZeux Build System (GNU Make)\n#\n# NOTE: This build system is designed to not use recursive Makefiles.\n# Th"
},
{
"path": "README.md",
"chars": 10056,
"preview": "# MegaZeux\n[Official MegaZeux git repository](https://github.com/AliceLR/megazeux)\n\nMegaZeux is a game creation system ("
},
{
"path": "arch/3ds/CONFIG.3DS",
"chars": 209,
"preview": "#!/bin/sh\n\n./config.sh --platform 3ds --enable-release --enable-lto --enable-meter \\\n --disable-sdl --enable-"
},
{
"path": "arch/3ds/Makefile.in",
"chars": 4298,
"preview": "#\n# Nintendo 3DS Makefile\n#\n\ninclude $(DEVKITARM)/3ds_rules\n\n.PHONY: package clean\n\nifeq ($(strip $(DEVKITPRO)),)\n$(erro"
},
{
"path": "arch/3ds/README.md",
"chars": 664,
"preview": "## Preparation\n\nYou need to install the latest versions of the devkitARM\ntoolchain, as well as the necessary 3DS tooling"
},
{
"path": "arch/3ds/audio.c",
"chars": 3092,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2016 Adrian Siekierka <asiekierka@gmail.com>\n *\n * This program is free software; you ca"
},
{
"path": "arch/3ds/event.c",
"chars": 8422,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2016 Adrian Siekierka <asiekierka@gmail.com>\n *\n * This program is free software; you ca"
},
{
"path": "arch/3ds/event.h",
"chars": 1479,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/3ds/keyboard.c",
"chars": 6979,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/3ds/keyboard.h",
"chars": 1415,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/3ds/pad.config",
"chars": 709,
"preview": "# Axis 1/2: Circle pad x/y\r\n# Hat: Directional pad\r\n# Button1: A\r\n# Button2: B\r\n# Button3: X\r\n# Button4: Y\r\n# Button5: L"
},
{
"path": "arch/3ds/pad.config.sdl12",
"chars": 651,
"preview": "# Axis 1/2: Circle pad x/y\n# Hat: Directional pad\n# Button1: Start\n# Button2: A\n# Button3: B\n# Button4: X\n# Button5: Y\n#"
},
{
"path": "arch/3ds/pad.config.sdl2",
"chars": 742,
"preview": "# Axis 1/2: Circle pad x/y\n# Button1: A\n# Button2: B\n# Button3: Select\n# Button4: Start\n# Button5: Right\n# Button6: Left"
},
{
"path": "arch/3ds/platform.c",
"chars": 3089,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2009 Alistair John Strachan <alistair@devzero.co.uk>\n * Copyright (C) 2007-2009 Kevin Va"
},
{
"path": "arch/3ds/platform.h",
"chars": 1549,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/3ds/render.cpp",
"chars": 37390,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/3ds/render.h",
"chars": 1463,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/3ds/shader_2d.g.pica",
"chars": 1844,
"preview": "; MegaZeux\n;\n; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n; Copyright (C) 2007 Alistair John Stracha"
},
{
"path": "arch/3ds/shader_2d.v.pica",
"chars": 1176,
"preview": "; MegaZeux\n;\n; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n; Copyright (C) 2007 Alistair John Stracha"
},
{
"path": "arch/3ds/shader_playfield.g.pica",
"chars": 1986,
"preview": "; MegaZeux\n;\n; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n; Copyright (C) 2007 Alistair John Stracha"
},
{
"path": "arch/3ds/shader_playfield.v.pica",
"chars": 1230,
"preview": "; MegaZeux\n;\n; Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n; Copyright (C) 2007 Alistair John Stracha"
},
{
"path": "arch/3ds/thread.h",
"chars": 3714,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2016, 2018 Adrian Siekierka <asiekierka@gmail.com>\n *\n * This program is free software; "
},
{
"path": "arch/LICENSE.3rd",
"chars": 34324,
"preview": "----------------------------------------------------------------\n Third party software licenses for MegaZeux\n----------"
},
{
"path": "arch/LICENSE.CC0",
"chars": 7048,
"preview": "Creative Commons Legal Code\n\nCC0 1.0 Universal\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n"
},
{
"path": "arch/LICENSE.DJGPP",
"chars": 8270,
"preview": "Licenses for DJGPP, including most licenses in the relevant source code.\nThis *should* be all of them aside from slightl"
},
{
"path": "arch/LICENSE.LGPL2",
"chars": 26530,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 19"
},
{
"path": "arch/LICENSE.MPL2",
"chars": 16726,
"preview": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\""
},
{
"path": "arch/LICENSE.Newlib",
"chars": 46329,
"preview": "The newlib subdirectory is a collection of software from several sources.\n\nEach file may have its own copyright/license "
},
{
"path": "arch/README",
"chars": 2068,
"preview": "MULTI-PLATFORM SUPPORT FOR MEGAZEUX\n\nThe arch/ directory structure contains any code/machinery which is platform\nspecifi"
},
{
"path": "arch/amiga/CONFIG.AMIGA",
"chars": 135,
"preview": "#!/bin/sh\n\n./config.sh --platform amiga --prefix /usr/local/amiga \\\n --disable-libpng --disable-utils --enabl"
},
{
"path": "arch/amiga/MZXRun",
"chars": 173,
"preview": "STACK 1000000\n\nAssign >NIL: \"USR:\" EXISTS\nIF NOT WARN\nELSE\nAssign USR: RAM:\nENDIF\n\nAssign >NIL: \"ETC:\" EXISTS\nIF NOT WAR"
},
{
"path": "arch/amiga/Makefile.in",
"chars": 1089,
"preview": "#\n# amiga makefile generics\n#\n\nCC = ppc-amigaos-gcc -mcrt=clib2 -I${PREFIX}/clib2/include\nCXX = ppc-amigaos-g++"
},
{
"path": "arch/amiga/MegaZeux",
"chars": 175,
"preview": "STACK 1000000\n\nAssign >NIL: \"USR:\" EXISTS\nIF NOT WARN\nELSE\nAssign USR: RAM:\nENDIF\n\nAssign >NIL: \"ETC:\" EXISTS\nIF NOT WAR"
},
{
"path": "arch/amiga/README",
"chars": 1267,
"preview": "MEGAZEUX ON AMIGA OS 4\n\nSince 2.82b, MegaZeux supports cross compilation to Amiga OS 4. You will\nrequire a valid copy of"
},
{
"path": "arch/android/CONFIG.ANDROID",
"chars": 275,
"preview": "#!/bin/sh\n\n# TODO: GL fixed renderers don't work. Probably not worth fixing.\n\n[ -z \"$NDK_PATH\" ] && { echo \"Must define "
},
{
"path": "arch/android/Makefile.deps",
"chars": 4085,
"preview": "#\n# Makefile fragment for building, installing, or uninstalling Android dependencies.\n# Dependencies are installed into "
},
{
"path": "arch/android/Makefile.in",
"chars": 7056,
"preview": "#\n# android makefile generics\n#\n\n.PHONY: dist build archive clean deps-build deps-install deps-uninstall deps-clean\n\nPRO"
},
{
"path": "arch/android/README.md",
"chars": 7316,
"preview": "# Building MegaZeux for Android\n\nNOTE: Only tested on Linux.\n\nNOTE: Requires a few gigabytes of hard drive space and som"
},
{
"path": "arch/android/SDL2-page-sizes.patch",
"chars": 719,
"preview": "diff -Nrup SDL2-2.30.9.orig/Android.mk SDL2-2.30.9/Android.mk\n--- SDL2-2.30.9.orig/Android.mk\t2023-06-04 08:55:56.000000"
},
{
"path": "arch/android/config_types.h",
"chars": 264,
"preview": "#ifndef __CONFIG_TYPES_H__\n#define __CONFIG_TYPES_H__\n\n#include <stdint.h>\n\ntypedef int16_t ogg_int16_t;\ntypedef uint16_"
},
{
"path": "arch/android/libogg-Android.mk",
"chars": 352,
"preview": "LOCAL_PATH := $(call my-dir)\n\ninclude $(CLEAR_VARS)\n\nLOCAL_MODULE := libogg\nLOCAL_C_INCLUDES := $(LOCAL_PATH)/include\nLO"
},
{
"path": "arch/android/libvorbis-Android.mk",
"chars": 1044,
"preview": "LOCAL_PATH := $(call my-dir)\n\ninclude $(CLEAR_VARS)\n\nLOCAL_MODULE := libvorbis\nLOCAL_C_INCLUDES := $(LOCAL_PATH)/include"
},
{
"path": "arch/android/project/app/build.gradle",
"chars": 2711,
"preview": "def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY');\ndef buildAsApplication = !buildAsLibrary\nif (buildAsApplic"
},
{
"path": "arch/android/project/app/jni/Android.mk",
"chars": 37,
"preview": "include $(call all-subdir-makefiles)\n"
},
{
"path": "arch/android/project/app/jni/Application.mk",
"chars": 205,
"preview": "# Uncomment this if you're using STL in your project\n# See CPLUSPLUS-SUPPORT.html in the NDK documentation for more info"
},
{
"path": "arch/android/project/app/jni/main/Android.mk",
"chars": 208,
"preview": "LOCAL_PATH := $(call my-dir)\n\ninclude $(CLEAR_VARS)\n\nLOCAL_MODULE := main\nLOCAL_SRC_FILES := ../lib/$(TARGET_ARCH_ABI)/l"
},
{
"path": "arch/android/project/app/proguard-rules.pro",
"chars": 636,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in [s"
},
{
"path": "arch/android/project/app/src/main/AndroidManifest.xml",
"chars": 3528,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:to"
},
{
"path": "arch/android/project/app/src/main/java/net/digitalmzx/megazeux/GameActivity.java",
"chars": 1599,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2019 Adrian Siekierka <kontakt@asie.pl>\n *\n * This program is free software; you can red"
},
{
"path": "arch/android/project/app/src/main/java/net/digitalmzx/megazeux/MainActivity.java",
"chars": 5001,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2019 Adrian Siekierka <kontakt@asie.pl>\n *\n * This program is free software; you can red"
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/HIDDevice.java",
"chars": 623,
"preview": "package org.libsdl.app;\n\nimport android.hardware.usb.UsbDevice;\n\ninterface HIDDevice\n{\n public int getId();\n publi"
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java",
"chars": 24168,
"preview": "package org.libsdl.app;\n\nimport android.content.Context;\nimport android.bluetooth.BluetoothDevice;\nimport android.blueto"
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java",
"chars": 27602,
"preview": "package org.libsdl.app;\n\nimport android.app.Activity;\nimport android.app.AlertDialog;\nimport android.app.PendingIntent;\n"
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java",
"chars": 9104,
"preview": "package org.libsdl.app;\n\nimport android.hardware.usb.*;\nimport android.os.Build;\nimport android.util.Log;\nimport java.ut"
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/SDL.java",
"chars": 3490,
"preview": "package org.libsdl.app;\n\nimport android.content.Context;\n\nimport java.lang.Class;\nimport java.lang.reflect.Method;\n\n/**\n"
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/SDLActivity.java",
"chars": 76263,
"preview": "package org.libsdl.app;\n\nimport android.app.Activity;\nimport android.app.AlertDialog;\nimport android.app.Dialog;\nimport "
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/SDLAudioManager.java",
"chars": 20091,
"preview": "package org.libsdl.app;\n\nimport android.content.Context;\nimport android.media.AudioDeviceCallback;\nimport android.media."
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/SDLControllerManager.java",
"chars": 30410,
"preview": "package org.libsdl.app;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.Comparator;\nimport j"
},
{
"path": "arch/android/project/app/src/main/java/org/libsdl/app/SDLSurface.java",
"chars": 14749,
"preview": "package org.libsdl.app;\n\n\nimport android.content.Context;\nimport android.content.pm.ActivityInfo;\nimport android.hardwar"
},
{
"path": "arch/android/project/app/src/main/res/raw/readme",
"chars": 49,
"preview": "The MZX build system should put assets.zip here.\n"
},
{
"path": "arch/android/project/app/src/main/res/values/colors.xml",
"chars": 208,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"colorPrimary\">#3F51B5</color>\n <color name=\"color"
},
{
"path": "arch/android/project/app/src/main/res/values/strings.xml",
"chars": 132,
"preview": "<resources>\n <string name=\"app_name\">MegaZeux</string>\n <string name=\"title_activity_main\">MainActivity</string>\n<"
},
{
"path": "arch/android/project/app/src/main/res/values/styles.xml",
"chars": 194,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme\" parent=\"android:Theme.NoTitleBar.Fullscreen"
},
{
"path": "arch/android/project/build.gradle",
"chars": 542,
"preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n r"
},
{
"path": "arch/android/project/gradle/wrapper/gradle-wrapper.properties",
"chars": 250,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "arch/android/project/gradle.properties",
"chars": 730,
"preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
},
{
"path": "arch/android/project/gradlew",
"chars": 8739,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "arch/android/project/gradlew.bat",
"chars": 2966,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "arch/android/project/settings.gradle",
"chars": 15,
"preview": "include ':app'\n"
},
{
"path": "arch/compat.inc",
"chars": 4298,
"preview": "#\n# Makefile compiler compatibility checks.\n# Define flags for optional compiler flags or settings to keep most\n# of the"
},
{
"path": "arch/darwin/MZXRun.plist",
"chars": 406,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "arch/darwin/Makefile.arch",
"chars": 2780,
"preview": "#\n# MegaZeux Darwin multi-arch configuration.\n#\n\nALL_ARCH = arm64 arm64e i686 x86_64 x86_64h ppc ppc64\n\n# Overrid"
},
{
"path": "arch/darwin/Makefile.in",
"chars": 8150,
"preview": "#\n# OS X makefile generics\n#\n\nDSOLDFLAGS = -dynamiclib\nDSOPRE = lib\nDSOPOST = .dylib\nDSORPATH =\nDSOSONAME = -i"
},
{
"path": "arch/darwin/MegaZeux.plist",
"chars": 427,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "arch/darwin/README.md",
"chars": 5873,
"preview": "# BUILDING MEGAZEUX VIA THIS MAKEFILE\n\nThis Makefile can be used to build a DMG targeting Mac OS X 10.4 (ppc, ppc64),\nMa"
},
{
"path": "arch/darwin/bin/otool",
"chars": 113,
"preview": "#!/bin/sh\n\n# Used to replace otool with otool-classic when bundling PowerPC64 binaries.\nxcrun otool-classic \"$@\"\n"
},
{
"path": "arch/darwin/bundle.sh",
"chars": 774,
"preview": "#!/bin/sh\n\nARCH=$1\nshift\n\n# PPC64 hotfix--replace otool with otool-classic.\n# LLVM-based otool uses llvm-objdump, does n"
},
{
"path": "arch/darwin/dmg.sh",
"chars": 538,
"preview": "#!/bin/sh\n\nTARGET=$1\n\nBASEDIR=build/dist/darwin\nDMGNAME=${BASEDIR}/${TARGET}.dmg\nVOLNAME=MegaZeux\n\nmkdir -p ${BASEDIR}\nr"
},
{
"path": "arch/darwin/lipo.sh",
"chars": 579,
"preview": "#!/bin/sh\n\n#\n# Lipo all the binaries together, if not already done\n#\nfor FILE in \"$@\"; do\n\t[ -f ${FILE} ] && rm ${FILE}\n"
},
{
"path": "arch/djgpp/CONFIG.DJGPP",
"chars": 260,
"preview": "#!/bin/sh\n\n[ -z \"$DJGPP\" ] && { echo \"DJGPP not defined! Aborting.\"; exit 1; }\n\n./config.sh --platform djgpp --prefix \"$"
},
{
"path": "arch/djgpp/Makefile.in",
"chars": 895,
"preview": "#\n# DJGPP Makefile\n#\n\nCROSS_COMPILE ?= i586-pc-msdosdjgpp-\nBINEXT = .exe\n\nEXTRA_LICENSES += ${LICENSE_DJGPP} ${LICENSE_L"
},
{
"path": "arch/djgpp/audio.c",
"chars": 11922,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2010 Alan Williams <mralert@gmail.com>\n * Copyright (C) 2019 Adrian Siekierka <kontakt@a"
},
{
"path": "arch/djgpp/driver_sb.h",
"chars": 2159,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2024 Alice Rowan <petrifiedrowan@gmail.com>\n *\n * This program is free software; you can"
},
{
"path": "arch/djgpp/event.c",
"chars": 15626,
"preview": "/* MegaZeux\n*\n* Copyright (C) 1996 Alexis Janson\n* Copyright (C) 2010 Alan Williams <mralert@gmail.com>\n*\n* This program"
},
{
"path": "arch/djgpp/interrupt.S",
"chars": 3575,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2010 Alan Williams <mralert@gmail.com>\n *\n * This program is free software; you can redi"
},
{
"path": "arch/djgpp/platform.c",
"chars": 9081,
"preview": "/* MegaZeux\n *\n * Copyright (C) 1996 Alexis Janson\n * Copyright (C) 2010 Alan Williams <mralert@gmail.com>\n * Copyright "
},
{
"path": "arch/djgpp/platform_djgpp.h",
"chars": 3649,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2010 Alan Williams <mralert@gmail.com>\n * Copyright (C) 2019 Adrian Siekierka <kontakt@a"
},
{
"path": "arch/djgpp/render_ega.c",
"chars": 13060,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2010 Alan Williams <mralert@gmail.com>\n * Copyright (C) 2019 Adrian Siekierka <kontakt@a"
},
{
"path": "arch/djgpp/render_svga.c",
"chars": 9974,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/djgpp/thread.h",
"chars": 1876,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2010 Alan Williams <mralert@gmail.com>\n * Copyright (C) 2019 Adrian Siekierka <kontakt@a"
},
{
"path": "arch/dreamcast/CONFIG.DC",
"chars": 373,
"preview": "#!/bin/sh\n\n[ -z \"$KOS_BASE\" ] && { echo \"\\$KOS_BASE is unset. Aborting\"; exit 1; }\n\n./config.sh --platform dreamcast --p"
},
{
"path": "arch/dreamcast/Makefile.in",
"chars": 2371,
"preview": "#\n# Dreamcast Makefile\n#\n\n.PHONY: package clean\n\nifeq ($(strip ${KOS_BASE}),)\n$(error \"KOS_BASE must be set in your envi"
},
{
"path": "arch/dreamcast/audio.c",
"chars": 2523,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2016, 2018 Adrian Siekierka <kontakt@asie.pl>\n *\n * This program is free software; you c"
},
{
"path": "arch/dreamcast/event.c",
"chars": 4049,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2016 Adrian Siekierka <asiekierka@gmail.com>\n *\n * This program is free software; you ca"
},
{
"path": "arch/dreamcast/pad.config",
"chars": 369,
"preview": "# Hat: Directional pad\r\n# Button1: A\r\n# Button2: B\r\n# Button3: X\r\n# Button4: Y\r\n# Button5: Left shoulder\r\n# Button6: Rig"
},
{
"path": "arch/dreamcast/platform.c",
"chars": 1493,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2009 Alistair John Strachan <alistair@devzero.co.uk>\n * Copyright (C) 2007-2009 Kevin Va"
},
{
"path": "arch/dreamcast/render.c",
"chars": 5445,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/dreamcast/render_fb.c",
"chars": 4246,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/dreamcast/thread.h",
"chars": 3866,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2016, 2018 Adrian Siekierka <asiekierka@gmail.com>\n * Copyright (C) 2022 Alice Rowan <pe"
},
{
"path": "arch/emscripten/CONFIG.HTML5",
"chars": 312,
"preview": "#!/bin/sh\n\n# NOTE: disabling softscale to save a little space since it's redundant\n# with software + canvas scaling. The"
},
{
"path": "arch/emscripten/Makefile.in",
"chars": 3577,
"preview": "CC = emcc\nCXX = em++\nAR = emar\nOBJCOPY = /bin/true\nSTRIP = /bin/true\n\n# Block --host, which will break t"
},
{
"path": "arch/emscripten/README",
"chars": 1167,
"preview": "PREPARATION\n\nYou need to install the following versions of the following libraries/tools:\n\n - Emscripten SDK (latest-up"
},
{
"path": "arch/emscripten/emzip.c",
"chars": 2590,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2020 Alice Rowan <petrifiedrowan@gmail.com>\n *\n * This program is free software; you can"
},
{
"path": "arch/emscripten/web/package.json",
"chars": 791,
"preview": "{\n \"name\": \"megazeux-web\",\n \"version\": \"0.1.0\",\n \"description\": \"MegaZeux web frontend\",\n \"type\": \"module\",\n \"main\""
},
{
"path": "arch/emscripten/web/res/docs/emscripten_readme.txt",
"chars": 1681,
"preview": "MegaZeux HTML5 port: (very) rough instructions\n\nindex.html provides an effective template of a MegaZeux instance which w"
},
{
"path": "arch/emscripten/web/res/index.html",
"chars": 2361,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<style type=\"text/css\">\n/* Note: the background color of the canvas"
},
{
"path": "arch/emscripten/web/res/mzxrun_loader.js",
"chars": 4236,
"preview": "/*!\n * MegaZeux\n *\n * Copyright (C) 2018, 2019 Adrian Siekierka\n * Copyright (C) 2020 Ian Burgmyer <spectere@gmail.com>\n"
},
{
"path": "arch/emscripten/web/rollup.config.js",
"chars": 489,
"preview": "import resolve from '@rollup/plugin-node-resolve';\nimport babel from '@rollup/plugin-babel';\nimport terser from '@rollup"
},
{
"path": "arch/emscripten/web/src/index.js",
"chars": 10142,
"preview": "/*!\n * MegaZeux\n *\n * Copyright (C) 2018, 2019 Adrian Siekierka\n *\n * Permission is hereby granted, free of charge, to a"
},
{
"path": "arch/emscripten/web/src/storage.js",
"chars": 9120,
"preview": "/*!\n * MegaZeux\n *\n * Copyright (C) 2018, 2019 Adrian Siekierka\n *\n * Permission is hereby granted, free of charge, to a"
},
{
"path": "arch/emscripten/web/src/storage_emscripten.js",
"chars": 11810,
"preview": "/*!\n * MegaZeux\n *\n * Copyright (C) 2018, 2019 Adrian Siekierka\n *\n * Permission is hereby granted, free of charge, to a"
},
{
"path": "arch/emscripten/web/src/util.js",
"chars": 2694,
"preview": "/*!\n * MegaZeux\n *\n * Copyright (C) 2018, 2019 Adrian Siekierka\n *\n * Permission is hereby granted, free of charge, to a"
},
{
"path": "arch/emscripten/web/src/zip.js",
"chars": 4636,
"preview": "/*!\n * MegaZeux\n *\n * Copyright (C) 2020 Alice Rowan\n *\n * Permission is hereby granted, free of charge, to any person o"
},
{
"path": "arch/emscripten/whitelist.json",
"chars": 2250,
"preview": "[\n\t\"main\",\n\t\t\"core_run\",\n\t\t\t\"core_resume\",\n\t\t\t\"core_update\",\n\t\t\t\t\"help_system\",\n\t\t\t\"core_draw\",\n\t\t\t\t\"game_draw\",\n\n\t\"titl"
},
{
"path": "arch/gp2x/Makefile.in",
"chars": 527,
"preview": "#\n# gp2x makefile generics\n#\n\nCROSS_COMPILE ?= arm-open2x-linux-\nBINEXT = .gpe\n\n# Disable rules that require target code"
},
{
"path": "arch/gp2x/README",
"chars": 2282,
"preview": "MEGAZEUX ON GP2X\n\nAs of MegaZeux 2.81g, Simon Parzer donated a port of MegaZeux to the GP2X. It\nhas a few limitations, n"
},
{
"path": "arch/gp2x/pad.config",
"chars": 760,
"preview": "# 1 Up\r\n# 2 Up-Left\r\n# 3 Left\r\n# 4 Down-Left\r\n# 5 Down\r\n# 6 Down-Right\r\n# 7 Right\r\n# 8 Up-Right\r\n# 9 Start\r\n# 10 Select\r"
},
{
"path": "arch/install.inc",
"chars": 6483,
"preview": "#\n# install/uninstall Makefile\n#\n# These recipes are intended primarily for use with the unix and darwin\n# platforms, bu"
},
{
"path": "arch/lha.inc",
"chars": 183,
"preview": "archive: build\n\t${RM} -r build/dist/${SUBPLATFORM}\n\t${MKDIR} -p build/dist/${SUBPLATFORM}\n\t@cd build/${SUBPLATFORM} && \\"
},
{
"path": "arch/manifest.sh",
"chars": 1091,
"preview": "#!/bin/sh\n\nset -e\nif [ \"$1\" = \"\" ]; then\n\techo \"usage: $0 [build dir]\"\n\texit 0\nfi\n\nif command -v sha256sum >/dev/null 2>"
},
{
"path": "arch/mingw/Makefile.in",
"chars": 3034,
"preview": "#\n# mingw makefile generics\n#\n\nPEFIX = ${pefix}\nBINEXT = .exe\n\nDSOLDFLAGS = -shared\nDSOPRE =\nDSOPOST = .dll\nDS"
},
{
"path": "arch/mingw/checkres-readme.txt",
"chars": 4434,
"preview": "checkres overview:\r\n------------------\r\n\r\ncheckres is a utility that scans MZX worlds and finds all of the resources the"
},
{
"path": "arch/mingw/checkres.bat",
"chars": 752,
"preview": "@REM (C) 2007 Josh Matthews (mrlachatte@gmail.com)\r\n@echo off\r\nset flags=\r\n:args\r\nif \"%1\"==\"-a\" (\r\n set flags=%flags% -"
},
{
"path": "arch/mingw/directx.bat",
"chars": 57,
"preview": "set SDL_VIDEODRIVER=directx\nstart \"\" \"%cd%\\megazeux.exe\"\n"
},
{
"path": "arch/mingw/installer.nsi",
"chars": 2095,
"preview": "; MegaZeux NSIS script\n\n!include \"MUI2.nsh\"\n\n!define srcdir \"dist/mzx282\"\n!define setup \"mzx282-x86.exe\"\n!define exec \"m"
},
{
"path": "arch/mingw/pefix.c",
"chars": 13636,
"preview": "/**\n * This tool modifies standard Microsoft PE32 and PE32+ (Portable Executable)\n * files on the i386 and AMD64 platfor"
},
{
"path": "arch/msvc/Core.vcxproj",
"chars": 25653,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
},
{
"path": "arch/msvc/Core.vcxproj.filters",
"chars": 29233,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "arch/msvc/Editor.vcxproj",
"chars": 14022,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
},
{
"path": "arch/msvc/Editor.vcxproj.filters",
"chars": 9472,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "arch/msvc/MZXRun.vcxproj",
"chars": 9927,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
},
{
"path": "arch/msvc/MZXRun.vcxproj.filters",
"chars": 1500,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "arch/msvc/MegaZeux.sln",
"chars": 4197,
"preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 15\r\nVisualStudioVersion = 15.0.27130.201"
},
{
"path": "arch/msvc/MegaZeux.vcxproj",
"chars": 10126,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
},
{
"path": "arch/msvc/MegaZeux.vcxproj.filters",
"chars": 1298,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "arch/msvc/README.txt",
"chars": 2053,
"preview": "BUILDING MEGAZEUX WITH MICROSOFT VISUAL STUDIO\r\n\r\nThis document covers the rationale and caveats regarding MegaZeux\r\ncom"
},
{
"path": "arch/msvc/config.h",
"chars": 589,
"preview": "#include \"version.h\"\n\n#define PLATFORM \"msvc\"\n#define CONFDIR \"./\"\n#define CONFFILE \"config.txt\"\n#define LICENSEDIR \"./\""
},
{
"path": "arch/msvc/dirent.h",
"chars": 26801,
"preview": "/*\n * Dirent interface for Microsoft Visual Studio\n *\n * Copyright (C) 1998-2019 Toni Ronkko\n * This file is part of dir"
},
{
"path": "arch/msvc/msvc.h",
"chars": 2348,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2007 Alistair John Strachan <alistair@devzero.co.uk>\n * Copyright (C) 2017 Ian Burgmyer "
},
{
"path": "arch/msvc/update_version.cmd",
"chars": 304,
"preview": "setlocal enableextensions enabledelayedexpansion\ncd %~dp0\n\ngit describe --exact-match --tags>vertemp.txt\nif not \"%ERRORL"
},
{
"path": "arch/msvc/win32time.c",
"chars": 1031,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2019 Ian Burgmyer <spectere@gmail.com>\n *\n * This program is free software; you can redi"
},
{
"path": "arch/msvc/win32time.h",
"chars": 938,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2019 Ian Burgmyer <spectere@gmail.com>\n *\n * This program is free software; you can redi"
},
{
"path": "arch/nds/CONFIG.NDS",
"chars": 296,
"preview": "#!/bin/sh\n\n./config.sh --platform nds --prefix $DEVKITARM --optimize-size --enable-lto \\\n --disable-editor --"
},
{
"path": "arch/nds/Makefile",
"chars": 715,
"preview": "#---------------------------------------------------------------------------------\n.SUFFIXES:\n#-------------------------"
},
{
"path": "arch/nds/Makefile.in",
"chars": 2633,
"preview": "#\n# Nintendo DS Makefile\n#\n\n.PHONY: package clean\n\nifeq ($(strip $(DEVKITPRO)),)\n$(error \"DEVKITPRO must be set in your "
},
{
"path": "arch/nds/README",
"chars": 455,
"preview": "PREPARATION\n\nYou need to build or install the devkitARM toolchain.\n\nCONFIGURING\n\nSee CONFIG.NDS for an optimal `config.s"
},
{
"path": "arch/nds/arm7/Makefile",
"chars": 4761,
"preview": "#---------------------------------------------------------------------------------\n.SUFFIXES:\n#-------------------------"
},
{
"path": "arch/nds/arm7/source/arm7main.c",
"chars": 3255,
"preview": "/*---------------------------------------------------------------------------------\n\n\tdefault ARM7 core\n\n\t\tCopyright (C)"
},
{
"path": "arch/nds/audio.c",
"chars": 11568,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2016 Adrian Siekierka <asiekierka@gmail.com>\n *\n * This program is free software; you ca"
},
{
"path": "arch/nds/dlmalloc.c",
"chars": 221509,
"preview": "#include \"dlmalloc.h\"\n\n/*\n This is a version (aka dlmalloc) of malloc/free/realloc written by\n Doug Lea and released t"
},
{
"path": "arch/nds/dlmalloc.h",
"chars": 24247,
"preview": "#include \"malloc_opts.h\"\n\n/*\n Default header file for malloc-2.8.x, written by Doug Lea\n and released to the public do"
},
{
"path": "arch/nds/event.c",
"chars": 9627,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007-2009 Kevin Vance <kvan"
},
{
"path": "arch/nds/event.h",
"chars": 1241,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/nds/evq.c",
"chars": 3088,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2009 Kevin Vance <kvance@kv"
},
{
"path": "arch/nds/evq.h",
"chars": 2419,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2009 Kevin Vance <kvance@kv"
},
{
"path": "arch/nds/extmem.c",
"chars": 5429,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2007 Kevin Vance <kvance@kvance.com>\n *\n * This program is free software; you can redist"
},
{
"path": "arch/nds/extmem.h",
"chars": 1169,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2007 Kevin Vance <kvance@kvance.com>\n *\n * This program is free software; you can redist"
},
{
"path": "arch/nds/gen_protected_palette.py",
"chars": 2922,
"preview": "#!/usr/bin/env python3\n\n# MegaZeux\n#\n# Copyright (C) 2020 Adrian Siekierka <asiekierka@gmail.com>\n#\n# This program is fr"
},
{
"path": "arch/nds/internals_notes.txt",
"chars": 733,
"preview": "VRAM layout\n--\nNOTE: This is for memory usage planning. All addresses given in ARM9 access.\n\nVRAM banks A, B (sub screen"
},
{
"path": "arch/nds/malloc_opts.h",
"chars": 363,
"preview": "#ifndef NDS_RAM_OPTS_H\n#define NDS_RAM_OPTS_H\n\n#define INSECURE\t\t0\n#define ONLY_MSPACES \t1\n#define HAVE_MORECORE\t\t0\n#"
},
{
"path": "arch/nds/pad.config",
"chars": 414,
"preview": "# Hat: Directional pad\r\n# Button1: A\r\n# Button2: B\r\n# Button3: X\r\n# Button4: Y\r\n# Button5: Left shoulder\r\n# Button6: Rig"
},
{
"path": "arch/nds/platform.c",
"chars": 4535,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2009 Alistair John Strachan <alistair@devzero.co.uk>\n * Copyright (C) 2007-2009 Kevin Va"
},
{
"path": "arch/nds/platform.h",
"chars": 1460,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2004-2006 Gilead Kutnick <exophase@adelphia.net>\n * Copyright (C) 2007 Alistair John Str"
},
{
"path": "arch/nds/ram.c",
"chars": 10072,
"preview": "#ifndef CONFIG_NDS_BLOCKSDS\n/**********************************\n Copyright (C) Rick Wong (Lick)\n\n Credits: Amadeus, Chi"
},
{
"path": "arch/nds/ram.h",
"chars": 1092,
"preview": "#ifndef CONFIG_NDS_BLOCKSDS\n/**********************************\n Copyright (C) Rick Wong (Lick)\n\n Credits: Amadeus, Chi"
},
{
"path": "arch/nds/render.c",
"chars": 23875,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2007-2009 Kevin Vance <kvance@kvance.com>\n *\n * This program is free software; you can r"
},
{
"path": "arch/nds/render.h",
"chars": 1510,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2007 Kevin Vance <kvance@kvance.com>\n *\n * This program is free software; you can redist"
},
{
"path": "arch/nds-blocksds/CONFIG.NDS",
"chars": 513,
"preview": "#!/bin/sh\n\n[ -z \"$BLOCKSDS\" ] && { echo \"\\$BLOCKSDS is unset, aborting\"; exit 1; }\n[ -z \"$WONDERFUL_TOOLCHAIN\" ] && { ec"
},
{
"path": "arch/nds-blocksds/Makefile.in",
"chars": 3921,
"preview": "#\n# Nintendo DS Makefile\n#\n\n.PHONY: package clean\n\nifeq ($(strip $(BLOCKSDS)),)\n$(error \"BLOCKSDS must be set in your en"
},
{
"path": "arch/none/Makefile.in",
"chars": 167,
"preview": "# placebo makefile\n\nSUPPRESS_ALL_TARGETS=1\n\nall:\n\t@echo \"Please run config.sh before make!\"\n\t@echo\n\t@echo \"Type ./config"
},
{
"path": "arch/pandora/Makefile.in",
"chars": 941,
"preview": "TOOLCHAIN ?= /usr/local/pandora/arm-2009q3\nCROSS_COMPILE ?= $(TOOLCHAIN)/bin/arm-none-linux-gnueabi-\nPANDORA_LIB"
},
{
"path": "arch/pandora/README",
"chars": 162,
"preview": "WRITE ME\n\n./config.sh --platform pandora --prefix /usr/local/pandora/arm-2009q3/usr \\\n --disable-gl --disable"
},
{
"path": "arch/psp/CONFIG.PSP",
"chars": 349,
"preview": "#!/bin/sh\n\n[ -z $PSPDEV ] && { echo \"\\$PSPDEV is unset. Aborting\"; exit 1; }\n\n./config.sh --platform psp --prefix $PSPDE"
},
{
"path": "arch/psp/Makefile.in",
"chars": 2017,
"preview": "#\n# psp makefile generics\n#\n\n.PHONY: package-pbp\n\nEXTRA_LICENSES += ${LICENSE_NEWLIB}\n\n#\n# PSP toolchain overrides\n#\nCRO"
},
{
"path": "arch/psp/README",
"chars": 1117,
"preview": "BUILDING MEGAZEUX FOR PSP\n\nAs of 2.81d, MegaZeux can be built for PSP. The only supported toolchain for\nthis is pspdev.\n"
},
{
"path": "arch/psp/pad.config",
"chars": 577,
"preview": "# 1 Triangle\r\n# 2 Circle\r\n# 3 Cross\r\n# 4 Square\r\n# 5 Left shoulder\r\n# 6 Right shoulder\r\n# 7 Down\r\n# 8 Left\r\n# 9 Up\r\n# 10"
},
{
"path": "arch/psp/platform.c",
"chars": 1165,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2009 Alistair John Strachan <alistair@devzero.co.uk>\n * Copyright (C) 2007-2009 Kevin Va"
},
{
"path": "arch/psvita/CONFIG.PSVITA",
"chars": 277,
"preview": "#!/bin/sh\n\n[ -z \"$VITASDK\" ] && { echo \"\\$VITASDK is unset. Aborting\"; exit 1; }\n\n./config.sh --platform psvita --prefix"
},
{
"path": "arch/psvita/Makefile.in",
"chars": 3335,
"preview": ".PHONY: clean package build\n\nBINEXT = .elf\nCROSS_COMPILE = arm-vita-eabi-\n\n# Disable rules that require target code to r"
},
{
"path": "arch/psvita/README.md",
"chars": 2248,
"preview": "# MegaZeux for the PlayStation Vita\n\nMegaZeux is now fully supported on the PS Vita handheld. The editor is fully\nsuppor"
},
{
"path": "arch/psvita/pad.config.sdl12",
"chars": 768,
"preview": "# Axis 1/2: left stick\r\n# Axis 3/4: right stick\r\n# Button1: Triangle\r\n# Button2: Circle\r\n# Button3: Cross\r\n# Button4: Sq"
},
{
"path": "arch/psvita/sce_sys/livearea/contents/template.xml",
"chars": 244,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<livearea style=\"a2\" format-ver=\"01.00\" content-rev=\"1\">\n\t<livearea-background>\n"
},
{
"path": "arch/switch/CONFIG.SWITCH",
"chars": 369,
"preview": "#!/bin/sh\n\n# NOTE: GL renderers currently cause system crashes on exit and are disabled\n# by default. They don't perform"
},
{
"path": "arch/switch/Makefile.in",
"chars": 2245,
"preview": "#\n# Nintendo Switch Makefile\n#\n\n.PHONY: package clean\n\nifeq ($(strip $(DEVKITPRO)),)\n$(error \"DEVKITPRO must be set in y"
},
{
"path": "arch/switch/pad.config",
"chars": 942,
"preview": "# Axis1: -left +right (left stick)\r\n# Axis2: -up +down\r\n# Axis3: -left +right (right stick)\r\n# Axis4: -up +d"
},
{
"path": "arch/unix/Makefile.in",
"chars": 3432,
"preview": "#\n# linux makefile generics\n#\n\nDSOLDFLAGS = -shared\nDSOPRE = lib\nDSOPOST = .so\nDSORPATH = -Wl,-rpath,${LIBDIR}\n"
},
{
"path": "arch/unix/README",
"chars": 595,
"preview": "MEGAZEUX ON UNIX / UNIX CLONES\n\nMegaZeux has been tested as compiling on the following UNIX / UNIX clones:\n\n - Linux (mo"
},
{
"path": "arch/unix/megazeux.desktop",
"chars": 195,
"preview": "[Desktop Entry]\nName=MegaZeux\nExec=megazeux\nIcon=megazeux\nTerminal=false\nType=Application\nCategories=Game;\nGenericName=G"
},
{
"path": "arch/unix/megazeux.metainfo.xml",
"chars": 4328,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Copyright 2025 Lachesis -->\n<component type=\"desktop-application\">\n <id>meg"
},
{
"path": "arch/unix/mzxrun.desktop",
"chars": 255,
"preview": "[Desktop Entry]\nName=MegaZeux (Runtime Only)\nExec=mzxrun\nIcon=megazeux\nTerminal=false\nType=Application\nCategories=Game;\n"
},
{
"path": "arch/wii/CONFIG.WII",
"chars": 206,
"preview": "#!/bin/sh\n\n./config.sh --platform wii --prefix $DEVKITPPC --enable-release --enable-lto \\\n --disable-sdl --di"
},
{
"path": "arch/wii/Makefile.in",
"chars": 2376,
"preview": "#\n# Wii Makefile\n#\n\n.PHONY: package\n\nifeq ($(strip $(DEVKITPRO)),)\n$(error \"DEVKITPRO must be set in your environment.\")"
},
{
"path": "arch/wii/README",
"chars": 714,
"preview": "BUILDING MEGAZEUX FOR WII\n\nAs of 2.82b, MegaZeux can be built for the Wii. You will need the devkitPPC\ntoolchain, libogc"
},
{
"path": "arch/wii/audio.c",
"chars": 3021,
"preview": "/* MegaZeux\n *\n * Copyright (C) 2008 Alan Williams <mralert@gmail.com>\n *\n * This program is free software; you can redi"
}
]
// ... and 1107 more files (download for full content)
About this extraction
This page contains the full source code of the AliceLR/megazeux GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1307 files (11.6 MB), approximately 3.1M tokens, and a symbol index with 8617 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.