Picotron Memory Layout

Overview

Picotron has 16MB of addressable RAM (0x000000..0xffffff), that can be manipulated using standard memory functions ( poke, memset etc).

Most of the values at the following special addresses can be manipulated using API functions (e.g.pal() writes values to the colour tables), but they can also be manipulated directly in memory for greater control.

Layout

0x000000 ~ 0x003fff Legacy PICO-8 range

0x004000 ~ 0x0047ff Primary P8SCII Font (2k)

0x005000 ~ 0x0053ff ARGB display palettes (1k)

0x005400 ~ 0x005477 Per-scanline rgb display palette selection (120 bytes)

0x005480 ~ 0x0054bf Indexed display palette (64 bytes)

0x0054c0 ~ 0x00553f Misc draw state (128 bytes)

0x005580 ~ 0x0055ff Raw controller state (128 bytes)

0x005600 ~ 0x005dff Secondary P8SCII font (2k)

0X005e00 ~ 0x005eff Reserved: P8 persistent state (256 bytes)

0x005f00 ~ 0x005f7f P8 draw State (some used by Picotron)

0x005f80 ~ 0x007fff Reserved: legacy P8 gpio, video memory

0x008000 ~ 0x00bfff Colour tables (16k)

0x00c000 ~ 0x00ffff Reserved (16k)

0x010000 ~ 0x02ffff Display / Draw Target (128k)

0x030000 ~ 0x07ffff Default audio data range

0x100000 ~ 0x1fffff Default map

0x200000 ~ 0xefffff Unreserved

0xf00000 ~ 0xffffff Wavetable data

Other Memory locations

Audio state

0x5538. app sfx_vol // 0x80 means 1.0 0x5539. app music_vol// 0x80 means 1.0 0x553a. sfx vol // chan->mix_vol for next play 0x553b. unused 0x553c. sfx base_addr// for next play. 0x3 means 0x30000 0x553d. music base_addr // for next play. can also set with music() 0x553e. unused(2)