Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

FAKE-08 3DS

From GameBrew
fake-08
Fake083ds2.png
General
Authorjtothebell
TypeComputer
Version0.0.2.20
LicenseMIT License
Last Updated2023/03/11
Links
Download
Website
Source

Fake-08 is a homebrew PICO-8 emulator, the latest release is available for Nintendo 3DS, Nintendo Switch, Sony PS Vita, and Nintendo Wii U.

Originally created by Lexaloffle Software, PICO-8 is a virtual machine and game engine. It is designed to be a fantasy video game console that mimics the limited graphical and sound capabilities of 8-bit systems of the 1980s. The goal of this is to spur one's creativity and ingenuity in producing games, and avoid being overwhelmed with the many possibilities of modern tools and machines. Such a design also allows PICO-8 games to have a familiar look and feel.

Installation

How to install

Available in 3DSX and CIA formats.

  • CIA - Install the .cia with the CIA manager of your choice.
  • 3DSX - Use the .3dsx provided with the Homebrew Launcher.

Create a folder named p8carts at the root of your SD card, and put the PICO-8 cart files in that folder.

Fake-08 supports .p8 text file carts and .p8.png image file carts.

Carts

You browse and download carts by using the SPLORE() function in Pico 8. Once you have loaded a cart that you want to try on FAKE-08, type save {{cartname}}.p8 to save the cart as a text file, then copy that file to your device's SD card.

You can also browse carts on the Pico-8 BBS website, but can only download complete carts in png format. As of pre release v0.0.1.1 Fake-08 should load and play png carts provided they don't use any other unsupported features. You can download p8.png carts from the Cart link in the lower left of the game view, and save it into your p8carts directory.

If you are trying to play a multi cart game, it should be noted that you must provide all the carts required by the game as FAKE-08 currently does not have cart downloading capabilities. All carts should be placed in the same directory.

See also Fake-08 cart compatibility list.

Notable games that are now playable (v0.0.2.17): Poom and Terra (Doom and Terraria demakes), plus Jelpi works correctly again.

Controls

Left/Right - Navigate carts 1 by 1

Up/Down - Navigate carts 10 by 10

A - Load selected cart

Start - Close selected cart

Select - Cycle screen sizes

L+R - Exit

Screenshots

fake083ds7.png fake083ds8.png

fake083ds9.png fake083ds10.png

Compatibility

Performance is not great on Old 3DS systems. Some games may experience slowdowns on the faster consoles as well.

More optimizations are probably possible, but keep in mind that Pico 8 lists a raspberry pi 1 with a 700 MHz ARM11 professor as minimum spec, and the old 3DS's CPU is 268 MHz ARM11.

Many games should be playable regardless, and hopefully more optimizations can be made.

Known issues

Latest Pico 8 version v0.2.2 features (sprite fill patterns, text control codes, custom fonts, etc) not implemented yet.

Games using flip() (like tweetcarts) have intermittent problems exiting back to the menu, and may crash the console. Use with caution.

Sound emulation is not perfect, and the noise implementation is noticably inaccurrate. Most of the sound implementation was ported over from Zepto 8, with the exception of the Noise instrument which was ported from PicoLove (some games have noticable clipping/popping and is not 100% accurate).

See issues page for more specifics.

Changelog

v0.0.2.20

  • All Platforms:
    • Add support for new stat values (46-56) for audio (thanks @fringd ).
    • Rewrite text rendering to support custom fonts and most remaining P8SCII control codes (audio control codes are parsed, but not played) and speed up text rendering (probably only noticeable on slow platforms like Bittboy and 3ds).
    • Add a corssfade between notes to more closely match PICO-8 behavior and fix some audio clipping (thanks @fringd ).
    • Add custom instrument support (thanks @fringd ).
    • add inext function to z8lua.
  • Libretro platforms:
    • Add support for analog input to emulate the mouse (thanks for the suggestion and start of implementation @medeirosT).
    • Add support for loading carts from memory in addition to the file system (may help with loading carts on Android devices with scoped storage).

v0.0.2.19

  • Fix behavior when drawing coordinates beyond sprite sheet bounds.
  • Fix mget bounds check being off by one on upper bounds (fixes some visual artifacts in map() and tline() calls).
  • Fix some text wrapping bugs.
  • Fix some text coloring bugs.
  • Fix bugs keeping track of smaller than default character size and line heights.
  • Fix a bug with music playback where looping sections were cut short (thanks @fringd).

v0.0.2.18

  • Add an alternate cart and settings menu (thanks @DPS2004 ). Access settings through the pause menu, and turn on new cart menu from there.
  • Add support for ? print shorthand in locations other than the start of a line.
  • Add support for pal with a single argument for resetting an individual palette (thanks @SamsTheNerd).
  • Prevent infinite loops caused by aggressive compiler optimizations preventing correct identification of max fix32 value.
  • Add undocumented _set_fps function.
  • stub out stat(29) and stat(30) to prevent erroneous keyboard press detection (fix weapon switching in Poom).
  • Improve support for suppressing the pause menu (also makes switching weapons easier in Poom).
  • Fix memory functions (peek, poke, memset, memcpy) at addresses above 0x8000 (thanks @nckstwrt).
  • Fix ord call with very long strings from overflowing (thanks @nckstwrt).
  • Fix lua parsing when a number is next to a keyword staring with "e" (ie end or else) (thanks (@nckstwrt).
  • Fix p8scii control code for background colors not using correct dimensions.
  • Add support for p8scii control code one off characters.
  • Improve handling of multiline comments (still needs work, but is improved).

v0.0.2.17

Bug Fixes:

  • Improve image quality of non-integer scaled images by using wide mode.
  • Fix loading multi cart games.

All platforms:

  • Honor print mode defaults poked into memory.
  • Refactor cartdata serialization and deserialization to work consistently across CPU architectures.
  • Add reset function.
  • Fix regression in mget bounds checking.
  • support extra arguments to poke2 and poke4.
  • Fix map default values if width has been changed and/or large map is being used.
  • Honor suppress pause menu flag.
  • Fix tline wrapping.
  • Fix passing a param to load if there is a nil breadcrumb.
  • Added support for getting key presses via stat (currently only supported on debug builds- Thanks @DPS2004).

v0.0.2.16

Bug Fixes:

  • Stub out stat values 120-122 (fix some crashing carts).
  • Fix setting map width to 256 (0).
  • Fix cartdata return value (credit to @DPS2004).
  • music pattern playback with a non-standard length (credit @DPS2004).

Improvements:

  • Fix local references of pico 8 api methods (possible small performance boost).
  • Add support for optional peek and poke arguments.
  • Add support for most P8SCII control codes (no audio or decoration characters yet).
  • Add support for menu item value changes (credit @DPS2004).

Release notes.

Credits

  • Zep/Lexaloffle software for making pico 8.
  • Nintendo Homebrew Community.
  • Vita Homebrew Community.
  • zepto8 - Probably the best Pico 8 emulator. FAKE-08's audio, tline, and newer png decompression implementations were ported from zepto8, and other parts were heavily influenced. Alsod use a slightly modified z8lua for pico 8 specific features.
  • PicoLove - Basis for a previous project - PicoLovePotion - and first learned the basics of Pico 8's API.
  • tac08 - A Pico 8 emulator. FAKE-08's sprite rendering and cart parsing is heavily based on tac08, and it uses 0xcafed00d's utf8-util to handle special characters in pico 8 carts.
  • LovePotion - An implementation of Love2d for 3DS and switch that served as the runtime for PicoLovePotion, and a great way to make homebrew games for the 3DS and switch. Also use a modified version of their static Logger implementation.

Postcard image from Vita Sprite credits:

External links

Advertising: