Compare commits

...
3 Commits
Author SHA1 Message Date
jurjen.ladeniusandClaude Opus 4.8 00b5833bb2 C cheat drops player one move from the exit, not on it
Instead of teleporting straight onto the exit cell (instant win), the C
cheat now places the player on an open neighbour of the exit, leaving one
valid move onto it. The exit is a normal spanning-tree cell, so at least
one of its up/left/right neighbours has an open passage; pick the first.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 21:48:14 +02:00
jurjen.ladeniusandClaude Opus 4.8 9faff1cfba Fix music tempo, note-on-switch, and title scroll shift
Three follow-up fixes to the per-screen music:

- Decode music in the H_TIMI VBlank interrupt (MusicVBlank) instead of
  once per Halt() in the game loops. The heavy per-step VDP work in
  ScrollDraw could overrun a VBlank, dropping the decode rate so the
  music slowed only while moving; the ISR keeps tempo steady regardless.
  The playing track is mapped into the unused bank-3 window (0xA000) and
  left there for the screen, so the ISR reads it with no bank switching
  and never races the main code's bank-2 tile/sprite swaps. PlayTrack()
  switches tracks under DI/EI. The game loops revert to plain Halt()s.

- PlayTrack() mutes the OPLL (key-off all 9 channels) before starting the
  next track, silencing the note that lingered across screen changes.

- TitleScreen()/ShowHints() zero the hardware scroll offset before drawing
  their absolute-coord images. Gameplay rests at g_BaseX/g_BaseY in
  {0,64,128,192}; without the reset the returning title/hints screen
  appeared horizontally shifted (only after finishing on a non-zero base).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 21:15:55 +02:00
jurjen.ladeniusandClaude Opus 4.8 1c0636e8ff Add per-screen FM music (lVGM / MSX-Music)
Each screen now plays its own looping MSX-Music (YM2413/OPLL) track:
title, hints, gameplay, and victory. Tracks are lVGM files embedded in
banked segments 26-29 (one per segment, each < 8KB so it never crosses a
boundary); segments 30-31 remain free.

- project_config.js: add psg/msx-music/vgm/lvgm_player modules; set
  EmulMSXMusic so ./build.sh run gives openMSX the FM-PAC (-ext fmpac).
- msxgl_config.h: enable LVGM_USE_PSG/MSXMUSIC (rest off), PSG_DIRECT.
- mazegame.c: MSXMusic_Initialize() once at boot; PlayTrack()/PlayFrame()
  bracket every player call with a bank-2 save/restore so music never
  disturbs the tile/sprite banking; a PlayFrame() follows every Halt() in
  the wait/animation loops (ScrollDraw, input loops now frame-synced,
  WaitKeySequence) to advance each track at 60 Hz. Logo stays silent.
- CLAUDE.md: document the music pipeline, banking protocol, and segments.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 20:43:18 +02:00
13 changed files with 1059 additions and 19 deletions
+96 -16
View File
@@ -7,7 +7,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
An MSX2+ maze game written in C against the **MSXgl** library (`../../engine`), built
into a 256KB **Konami SCC mapper ROM**. SCREEN 8 (G7, 256 colors), 32×32-pixel tiles,
player always centered with smooth easing scroll. The whole game is one translation unit
(`mazegame.c`) plus ~24 generated data files holding bitmap assets in banked ROM segments.
(`mazegame.c`) plus ~28 generated data files holding bitmap assets and per-screen music in
banked ROM segments. Each screen has its own looping **MSX-Music (FM/OPLL)** track.
## Build & run
@@ -33,7 +34,10 @@ at runtime with `SET_BANK_SEGMENT(2, n)` / `GET_BANK_SEGMENT(2)` (from `rom_mapp
The `_b2` suffix on the generated files means "bank 2". Always save and restore the
previous segment around a bank switch — the existing code does this everywhere.
Segment allocation (each file is `const u8 g_*[8192]` filling one 8KB segment exactly):
Segment allocation. The build auto-discovers any `mazegame_s{N}_b2.c` (N up to 31) and
pins its data to the start of segment N at the bank-2 window; the file's one `const u8 g_*`
array need not fill the whole 8KB (bitmap assets do; music tracks are smaller and the rest
of the segment is zero-padded).
| Segments | File(s) | Contents |
|----------|--------------------------|---------------------------------------------------|
@@ -43,10 +47,14 @@ Segment allocation (each file is `const u8 g_*[8192]` filling one 8KB segment ex
| 17 | `mazegame_s17_b2.c` | Sprite frames: east + west, frames 03 |
| 18 | `mazegame_s18_b2.c` | All 8 tile bitmaps (1024 B each, 32×32) |
| 1925 | `mazegame_s19..25_b2.c` | Hint screen image |
| 26 | `mazegame_s26_b2.c` | Music: title screen (lVGM, FM) |
| 27 | `mazegame_s27_b2.c` | Music: hints screen (lVGM, FM) |
| 28 | `mazegame_s28_b2.c` | Music: gameplay/maze (lVGM, FM) |
| 29 | `mazegame_s29_b2.c` | Music: victory screen (lVGM, FM) |
A 256×212 SCREEN 8 image is 53,248 bytes = 7 segments (last one zero-padded). Sprite
frames are 24×24 = 576 bytes each, addressed as `0x8000 + (localDir*4 + frame) * 576`.
Tiles are addressed as `0x8000 + index*1024`.
Segments 3031 are free. A 256×212 SCREEN 8 image is 53,248 bytes = 7 segments (last one
zero-padded). Sprite frames are 24×24 = 576 bytes each, addressed as
`0x8000 + (localDir*4 + frame) * 576`. Tiles are addressed as `0x8000 + index*1024`.
### Asset pipeline (PNG → C, run manually, then rebuild)
@@ -62,6 +70,40 @@ All converters encode pixels as SCREEN 8 **GRB** (bits 75 = G3, 42 = R3, 1
`to_grb()`. Any new color/asset code must use the same encoding. Sprite segments (16/17)
have no checked-in converter — edit them as data directly.
### Music — per-screen lVGM (MSX-Music / FM)
Each screen has its own looping track played by MSXgl's `vgm/lvgm_player`. The tracks are
**lVGM** (compact VGM) files in `music/`, all **MSX-Music (YM2413 / OPLL / FM)** — so FM must
exist: built into most MSX2+ machines, and `project_config.js` sets `EmulMSXMusic = true`
so `./build.sh run` gives openMSX the FM-PAC (`-ext fmpac`). The PSG carries no music.
- **Source → ROM:** the `.lvgm` files were embedded as the `mazegame_s26..29_b2.c` data
files (one track per segment; each is < 8KB so it never crosses a segment boundary). To
regenerate after replacing a `.lvgm`, re-run the small embed step (bin2c-style: dump the
bytes as `const u8 g_Mus*[N]` in the matching `s{26..29}_b2.c`). See
`~/Repositories/msx-music-generator` (the generator + its `msxgl-example/README.md`).
- **Decode runs in the VBlank interrupt (this is the key design point).** `MusicVBlank()` is
installed as the `H_TIMI` hook (`BIOS_SetHookCallback`) and calls `LVGM_Decode()` once per
VBlank — so the tempo is **steady regardless of how long a frame's game work takes**. (An
earlier design decoded once per `Halt()` in the main loop; the heavy per-step VDP work in
`ScrollDraw` could overrun a VBlank, so the decode rate — and the music — slowed *only while
moving*. The ISR decouples them.) The game loops therefore contain **no** decode calls; they
are plain `Halt()`/busy-waits as before the music existed.
- **Banking — why it's race-free:** the tracks are compiled at the bank-2 link address but at
runtime `PlayTrack()` maps the current track into the **bank-3 window** (`0xA000-0xBFFF`) and
leaves it there for the whole screen. Gameplay only ever switches **bank 2** (`0x8000`) for
tiles/sprites, so bank 3 is never touched and the ISR can read `0xA000` at any moment without
a bank save/restore and without racing the main code. `PlayTrack(seg)` runs under
`DisableInterrupt()`/`EnableInterrupt()` (mute the old track's hanging note → map bank 3 →
`LVGM_Play(0xA000, TRUE)`) so `MusicVBlank` can't decode mid-switch. `MSXMusic_Initialize()`
and the hook install run once at the top of `main()`; `MusicVBlank` is a no-op until a track
is playing (`LVGM_IsPlaying()`).
- **Config:** `LibModules` adds `psg`, `msx-music`, `vgm/lvgm_player`; `msxgl_config.h` sets
`LVGM_USE_PSG`/`LVGM_USE_MSXMUSIC` on (rest off) and `PSG_ACCESS = PSG_DIRECT`.
- The tracks are authored at **60 Hz**; on a 50 Hz (PAL) machine they play a constant ~17 %
slower (the decode rate is the display refresh). That's uniform, not movement-specific.
- The boot **logo animation is intentionally silent** (no track).
### VRAM layout (off-screen caches above the visible 256×212)
`mazegame.c` reserves off-screen VRAM rows in the 128KB space and documents exact
@@ -72,30 +114,68 @@ coordinates in the constants block — keep these regions non-overlapping when c
Rendering uses VDP commands (HMMV/HMMM, enabled via `VDP_USE_COMMAND` in `msxgl_config.h`)
to blit from these caches rather than re-drawing per frame.
### Scrolling model — VRAM torus (why there is no per-move flash)
The visible page is treated as a **256×256 VRAM torus**. Two globals, `g_BaseX`/`g_BaseY`,
hold the *resting* hardware scroll offset (R#26/27 and R#23); both are always a multiple of
64 and cycle through `{0, 64, 128, 192}`. A screen pixel `(sx, sy)` maps to VRAM
`((sx+g_BaseX)&255, (sy+g_BaseY)&255)`.
A move (`ScrollDraw`) animates the scroll register from `base` to `base ± 64` over the 8
ease steps, rendering the two newly-exposed tile-rows/cols into the VRAM cells that scroll
off the *opposite* edge, then simply keeps the new offset as the resting base. **Nothing is
bulk-shifted or blanked afterwards** — the old content is already at the correct torus
position, so there is no offset reset, no bulk HMMM, no strip paste, and no display blank.
(The earlier "canonicalize after every move" design did all of those behind a
`VDP_EnableDisplay(FALSE)`, which was the visible per-move flash.)
Consequences to respect when editing:
- **All gameplay VRAM drawing must go through the base.** `DrawTileData`/`DrawTile` add it
to their HMMM/HMMV destination; the `WriteVV` helper does it for per-row CPU writes
(sprite, compositors, cat-sense arrow) and **splits a run at the 256-column wrap**. Tiles
are 32-aligned and the base is a multiple of 64, so tiles never straddle; the 24px sprite
can straddle mid-animation, which is why `WriteVV` exists.
- Fill targets in `ScrollDraw` are **base-relative** but the fill *timing* (which animation
step is safe to write each row/col) is **base-invariant**; at `base = 0` every expression
reduces exactly to the pre-torus code, which is the easy case to reason about.
- Vertical has only 32px of slack in the 256-row torus, so one new tile-row is pre-filled
(off-screen slack) and the other is deferred until it scrolls off; horizontal fills
progressively as columns wrap. This is the delicate part — verify long straight runs in
each direction (the base crosses its wrap on the 4th move) and the sprite at screen edges.
- Anything that draws at **absolute** VRAM coords must zero the scroll offset while shown and
restore `g_BaseX`/`g_BaseY` after — the minimap overlay does this.
- `main()` game setup resets `g_BaseX = g_BaseY = 0` and the offset registers before the
first `DrawFull`.
### Game flow (`main()`)
`ShowLogoAnimation()` (SCREEN 5 fade) → loop of: `TitleScreen()` (ordered dissolve from
opening to opening+titles using the banked images) → `srand(*0xFC9E)` seed from the BIOS
`ShowLogoAnimation()` (SCREEN 5 fade, silent) → loop of: `TitleScreen()` (ordered dissolve
from opening to opening+titles using the banked images) → `srand(*0xFC9E)` seed from the BIOS
jiffy clock → `GenerateMaze()` (iterative DFS, `g_RW`/`g_DW` wall arrays) → `ShowHints()`
→ set up SCREEN 8, preload tiles/minimap into VRAM → inner movement loop.
→ set up SCREEN 8, preload tiles/minimap into VRAM → inner movement loop`ShowWinScreen()`
on reaching the exit. Each of these screens starts its own looping track with `PlayTrack()`
(see "Music" above); `MSXMusic_Initialize()` runs once before the logo.
Movement is an 8-step ease-in/out scroll (`g_AO` cumulative offsets summing to 64px = two
tiles) implemented with VDP register scroll + strip rendering; input (keyboard + joystick,
sampled at the last animation frame) chains directly into the next move if a direction is
still held. The player is a 24×24 **software** sprite (`DrawSpriteAt`) drawn into VRAM —
hardware sprites are disabled. Hold **M** for the minimap overlay.
tiles) implemented as a **VRAM torus** (see "Scrolling model" above) — VDP register scroll
plus edge-strip rendering, with no per-move blank/flash. Input (keyboard + joystick, sampled
at the last animation frame) chains directly into the next move if a direction is still
held. The player is a 24×24 **software** sprite (`DrawSpriteAt`) drawn into VRAM — hardware
sprites are disabled. Hold **M** for the minimap overlay.
### MSXgl configuration
`msxgl_config.h` is the per-project feature switch for the dynamically-compiled library:
SCREEN 5 (G4) and SCREEN 8 (G7) modes, VDP commands, 16×16 sprites, keyboard+joystick
input. Enabling a library feature the game starts using generally requires flipping the
matching `*_USE_*` define here.
input, and the lVGM/PSG/MSX-Music replayer (see "Music"). Enabling a library feature the
game starts using generally requires flipping the matching `*_USE_*` define here **and**
adding the module to `LibModules` in `project_config.js`.
## Conventions in this codebase
- Globals use terse `g_XX` names (documented inline at the top of `mazegame.c`); section
banners are `//==== … ====`. Match that style.
- `out/` is generated build output (`.asm/.rel/.lst/.sym/.map/.rom`) — never edit by hand.
- This directory is **not** a git repository, and MSXgl itself was patched for macOS
(see `../../SETUP_MACOS.md`); those edits are untracked, so don't assume version control.
- The repo root is `../../` (the whole `MSXgl-1.4.1` tree, pushing to the `mazegame` remote);
work happens directly on `main`. MSXgl itself was patched for macOS (see
`../../SETUP_MACOS.md`); those engine edits are untracked, so don't assume they're versioned.
Binary file not shown.
+73 -2
View File
@@ -7,6 +7,10 @@
//-----------------------------------------------------------------------------
#include "msxgl.h"
#include "rom_mapper.h"
#include "bios_hook.h"
#include "psg.h"
#include "msx-music.h"
#include "vgm/lvgm_player.h"
#include <stdlib.h>
//=============================================================================
@@ -96,6 +100,45 @@ u8 g_VSeed; // per-game seed for tile variant hash
u8 g_BaseX; // resting horizontal scroll offset (mult of 64)
u8 g_BaseY; // resting vertical scroll offset (mult of 64)
//=============================================================================
// MUSIC (lVGM, MSX-Music / OPLL) — one looping track per screen, in banked ROM
//=============================================================================
// Each track fills the start of its own ROM segment (the `_b2` files are compiled
// at the bank-2 link address, but at runtime the track is mapped into the *bank-3*
// window at 0xA000-0xBFFF and left there for the whole screen). Gameplay only ever
// switches bank 2 (0x8000) for tiles/sprites, so bank 3 is never disturbed and the
// track stays put. Decoding runs in the H_TIMI VBlank interrupt (MusicVBlank), so
// the music tempo is rock-steady no matter how long a frame's game work takes — the
// scroll animation can overrun a VBlank without dragging the music down with it.
// Because the ISR reads only from bank 3, it never races the main code's bank-2
// switching, and needs no bank save/restore. Each track is < 8KB (one segment).
#define MUS_SEG_TITLE 26 // mazegame_s26_b2.c (g_MusTitle)
#define MUS_SEG_HINTS 27 // mazegame_s27_b2.c (g_MusHints)
#define MUS_SEG_MAZE 28 // mazegame_s28_b2.c (g_MusMaze)
#define MUS_SEG_WIN 29 // mazegame_s29_b2.c (g_MusWin)
#define MUS_WINDOW ((const u8*)0xA000) // bank-3 window the track is mapped into
// H_TIMI (VBlank) hook: advance the current track one frame. No-op until a track is
// playing. Reads only from the bank-3 window, which nothing else touches.
void MusicVBlank(void)
{
if (LVGM_IsPlaying())
LVGM_Decode();
}
// Switch to a looping track: silence the previous track's lingering note (key-off all
// 9 FM channels), map the new track into bank 3, and start it. Interrupts are disabled
// across the switch so MusicVBlank can't decode from a half-updated pointer or segment.
static void PlayTrack(u8 seg)
{
DisableInterrupt();
MSXMusic_Mute();
SET_BANK_SEGMENT(3, seg);
LVGM_Play(MUS_WINDOW, TRUE);
EnableInterrupt();
}
//=============================================================================
// MAZE GENERATION (iterative DFS)
//=============================================================================
@@ -843,9 +886,13 @@ static void WaitKeySequence(void)
static void ShowHints(void)
{
VDP_EnableDisplay(FALSE);
// Drawn at absolute VRAM coords — clear any leftover hardware scroll offset.
VDP_SetVerticalOffset(0);
VDP_SetHorizontalOffset(0);
for (u8 y = 0; y < IMG_ROWS; y++)
WriteImgRow(IMG_SEG_HINTS, y);
VDP_EnableDisplay(TRUE);
PlayTrack(MUS_SEG_HINTS);
WaitKeySequence();
}
@@ -857,11 +904,18 @@ void TitleScreen(void)
VDP_EnableDisplay(FALSE);
VDP_ClearVRAM();
// This image is drawn at absolute VRAM coords, so clear any hardware scroll
// offset left over from a previous game (gameplay rests at g_BaseX/g_BaseY in
// {0,64,128,192}); without this the returning title screen appears shifted.
VDP_SetVerticalOffset(0);
VDP_SetHorizontalOffset(0);
// Stream image A (no title) to VRAM display area
for (u8 y = 0; y < IMG_ROWS; y++)
WriteImgRow(IMG_SEG_A, y);
VDP_EnableDisplay(TRUE);
PlayTrack(MUS_SEG_TITLE);
// Hold image A for ~2 seconds (100 VBlanks at 50Hz)
for (u8 i = 0; i < 100; i++) Halt();
@@ -931,6 +985,7 @@ static void ShowWinScreen(void)
Bios_SetCursorPosition(7, 15);
Bios_TextPrintString("Press any key to return...");
PlayTrack(MUS_SEG_WIN);
WaitKeySequence();
}
@@ -940,6 +995,11 @@ static void ShowWinScreen(void)
void main(void)
{
// Init the MSX-Music (OPLL) chip once, then install the VBlank hook that decodes
// the current track every frame (MusicVBlank is a no-op until a track is playing).
MSXMusic_Initialize();
BIOS_SetHookCallback(H_TIMI, MusicVBlank);
ShowLogoAnimation();
while (1) {
@@ -1009,6 +1069,7 @@ void main(void)
g_MX = g_SX; g_MY = 0;
DrawFull();
VDP_EnableDisplay(TRUE);
PlayTrack(MUS_SEG_MAZE);
// Start timer: sample current jiffy clock, reset frame counter.
g_PrevTick = *(volatile u8*)0xFC9E;
@@ -1048,9 +1109,19 @@ void main(void)
!IS_KEY_PRESSED(row5, KEY_S) &&
JOY_GET_DIR(g_Joy) == 0 && !IS_JOY_PRESSED(g_Joy, JOY_INPUT_TRIGGER_A));
// C: teleport to exit
// C: teleport to one move away from the exit (the final step is left
// to the player). The exit (g_EX, MAZE_H-1) is a normal maze cell, so
// at least one of its up/left/right neighbours has an open passage to
// it; drop the player on the first such neighbour.
if (IS_KEY_PRESSED(row3, KEY_C)) {
g_MX = g_EX; g_MY = MAZE_H - 1;
u8 ey = MAZE_H - 1;
if (g_DW[g_EX][ey-1] == 0) { // open above -> step down
g_MX = g_EX; g_MY = ey - 1;
} else if (g_EX > 0 && g_RW[g_EX-1][ey] == 0) { // open left -> step right
g_MX = g_EX - 1; g_MY = ey;
} else { // open right -> step left
g_MX = g_EX + 1; g_MY = ey;
}
DrawFull();
row8 = 0xFF;
continue;
+334
View File
@@ -0,0 +1,334 @@
#include "msxgl.h"
// lVGM music track — title screen.
// Occupies the start of banked segment 26 (bank-2 window 0x8000-0x9FFF,
// via SET_BANK_SEGMENT(2, 26)). MSX-Music (YM2413/OPLL), 60 Hz, looping.
// 5186 bytes; the rest of the 8KB segment is unused padding.
// Access: LVGM_Play((const u8*)0x8000, TRUE) with segment 26 banked in.
const u8 g_MusTitle[5186] = {
0x6C, 0x56, 0x47, 0x4D, 0x06, 0x02, 0xF1, 0x16, 0x20, 0xFE, 0x26, 0x05, 0x17, 0x50, 0x27, 0x05,
0x18, 0xC0, 0x28, 0x01, 0x56, 0x00, 0x0E, 0x20, 0x10, 0xB3, 0x20, 0x19, 0x30, 0x42, 0x11, 0x59,
0x21, 0x17, 0x31, 0xB6, 0x12, 0x59, 0x22, 0x13, 0x32, 0xE4, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE6,
0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12,
0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE6, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE6,
0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE6, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x02, 0x20, 0x1B, 0x21,
0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE6, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x20, 0x0B, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07,
0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE6,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE6, 0x21,
0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x83,
0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE6, 0x21, 0x07,
0x11, 0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22,
0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE6, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09,
0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x13,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19,
0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02,
0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0, 0x10, 0x02, 0x21, 0x09,
0x11, 0x46, 0x21, 0x19, 0x22, 0x03, 0x12, 0x46, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0xFF, 0x20,
0x19, 0x0E, 0x20, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10,
0x05, 0xE0, 0x10, 0x07, 0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x05, 0xE0, 0x10,
0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20,
0x1B, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x13, 0x0E, 0x28, 0xE0,
0x10, 0x05, 0x0E, 0x20, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF,
0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0,
0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0, 0x10, 0x02,
0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0x22, 0x03, 0x12, 0x46, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10,
0xFF, 0x20, 0x19, 0x0E, 0x20, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B,
0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x05,
0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x20,
0x09, 0x21, 0x09, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x30, 0xE0,
0x0E, 0x20, 0xE6, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07,
0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2,
0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x09, 0x11, 0xB3,
0x21, 0x17, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10,
0xB7, 0xE0, 0x20, 0x09, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05,
0x12, 0x59, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0,
0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10,
0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0,
0x20, 0x0B, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02,
0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F,
0xE0, 0x10, 0x1D, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x22,
0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x20, 0x0B, 0x10, 0x02, 0x20, 0x1B,
0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E,
0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0,
0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10,
0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0, 0x10, 0x02, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x19,
0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0x0E, 0x20, 0xE0,
0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07,
0xE0, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF,
0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x09, 0x21,
0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x10, 0x05, 0x0E, 0x20, 0xE0, 0x10,
0x07, 0xE1, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0,
0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10,
0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0, 0x20, 0x0B, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x09,
0x11, 0xB3, 0x21, 0x19, 0x22, 0x07, 0x12, 0xB3, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2,
0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x09, 0x11, 0x22,
0x21, 0x19, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10,
0xB7, 0xE0, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x07,
0x12, 0xCC, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0,
0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0xE0, 0x10, 0x7F, 0xE0,
0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0x21, 0x09,
0x11, 0x59, 0x21, 0x19, 0x22, 0x05, 0x12, 0x59, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0x7F, 0x0E,
0x20, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A,
0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F,
0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0x21, 0x07, 0x21, 0x17, 0x22, 0x07, 0x12,
0xCC, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x10, 0x87, 0x0E, 0x20, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87,
0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19,
0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0,
0x10, 0x83, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0x22, 0x05, 0x12, 0x59, 0x22, 0x17, 0x0E, 0x21,
0xE0, 0x10, 0x7F, 0x0E, 0x20, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x87, 0xE0, 0x10, 0x8A, 0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x87, 0xE0, 0x10,
0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x20, 0x09, 0x21, 0x07, 0x11,
0x02, 0x21, 0x19, 0x22, 0x07, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE6, 0x21,
0x09, 0x11, 0x46, 0x21, 0x19, 0xE6, 0x21, 0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83,
0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE6, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE6, 0x10,
0x59, 0x20, 0x19, 0x21, 0x09, 0x21, 0x19, 0x22, 0x07, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x28, 0xE0,
0x0E, 0x20, 0xE2, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21,
0x09, 0x11, 0x46, 0x21, 0x19, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10,
0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0x21, 0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12,
0x83, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0x55, 0x0E, 0x20, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55,
0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19,
0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0,
0x10, 0x59, 0x21, 0x09, 0x21, 0x19, 0x22, 0x07, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x30, 0xE0, 0x10,
0x5D, 0x0E, 0x20, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0,
0x10, 0x53, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0,
0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21,
0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x09, 0x11,
0x02, 0x21, 0x19, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1,
0x10, 0x87, 0xE0, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x09, 0x21, 0x19, 0x22, 0x07, 0x12,
0x02, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10,
0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0xE0, 0x10, 0xAE, 0xE0, 0x10,
0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x20, 0x09, 0x10, 0x02, 0x20,
0x1B, 0x21, 0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC,
0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0,
0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0, 0x20, 0x0B, 0x10, 0xB3, 0x20, 0x19, 0x21,
0x09, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20,
0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x07, 0x11,
0xB3, 0x21, 0x17, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1,
0x10, 0xB7, 0xE0, 0x10, 0xB3, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22,
0x15, 0x0E, 0x21, 0xE0, 0x10, 0xAE, 0x0E, 0x20, 0xE0, 0x10, 0xAB, 0xE1, 0x10, 0xAE, 0xE0, 0x10,
0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10,
0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE1, 0x10, 0xAE, 0xE0, 0x20, 0x09,
0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13,
0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10,
0x7C, 0xE0, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07,
0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2,
0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21, 0x09, 0x11, 0xB3,
0x21, 0x17, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10,
0x5D, 0xE0, 0x20, 0x09, 0x10, 0x46, 0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05,
0x12, 0x83, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x49, 0xE0, 0x10, 0x46, 0xE0,
0x10, 0x42, 0xE0, 0x10, 0x40, 0xE0, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x42, 0xE0,
0x10, 0x46, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x4B, 0xE1, 0x10, 0x49, 0xE0, 0x10, 0x46, 0x21, 0x07,
0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x42, 0x0E,
0x20, 0xE0, 0x10, 0x40, 0xE1, 0x10, 0x42, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x4B,
0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x42,
0xE0, 0x10, 0x40, 0xE1, 0x10, 0x42, 0xE0, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07, 0x11,
0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10,
0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21, 0x07, 0x11, 0xCC, 0x21,
0x17, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D,
0xE0, 0x10, 0x59, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E,
0x21, 0xE0, 0x10, 0x55, 0x0E, 0x20, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0,
0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x5D, 0xE0,
0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x20, 0x09, 0x10, 0x83,
0x20, 0x19, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x13, 0x0E, 0x30,
0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0,
0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0,
0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x09, 0x11, 0x46,
0x21, 0x19, 0x22, 0x03, 0x12, 0x46, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7,
0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19,
0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0,
0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3,
0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F,
0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83,
0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0x21, 0x09, 0x11, 0x46,
0x21, 0x19, 0x22, 0x03, 0x12, 0x46, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x7F, 0x0E, 0x20, 0xE0,
0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE0, 0x21,
0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10,
0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0x21, 0x09, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12,
0x59, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x10, 0x87, 0x0E, 0x20, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87,
0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17,
0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0,
0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02,
0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55,
0xE0, 0x10, 0x53, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59,
0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x20, 0x09, 0x10, 0x46, 0x20, 0x19,
0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE2, 0x10, 0x49, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x42, 0xE0, 0x10, 0x40, 0xE0, 0x21, 0x07,
0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x42, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x4B,
0xE1, 0x10, 0x49, 0xE0, 0x10, 0x46, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02,
0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x42, 0x0E, 0x20, 0xE0, 0x10, 0x40, 0xE1, 0x10, 0x42, 0xE0,
0x10, 0x46, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x4B, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0,
0x10, 0x49, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x42, 0xE0, 0x10, 0x40, 0xE1, 0x10, 0x42, 0xE0, 0x10,
0x46, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x30, 0xE0,
0x10, 0x49, 0x0E, 0x20, 0xE0, 0x10, 0x4B, 0xE1, 0x10, 0x49, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x42,
0xE0, 0x10, 0x40, 0xE0, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0xE0, 0x10, 0x42, 0xE0, 0x10, 0x46,
0xE0, 0x10, 0x49, 0xE0, 0x10, 0x4B, 0xE1, 0x10, 0x49, 0xE0, 0x10, 0x46, 0x21, 0x09, 0x11, 0xB3,
0x21, 0x19, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x42, 0x0E, 0x20, 0xE0,
0x10, 0x40, 0xE1, 0x10, 0x42, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x4B, 0xE0, 0x21,
0x09, 0x11, 0x22, 0x21, 0x19, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x42, 0xE0, 0x10,
0x40, 0xE1, 0x10, 0x42, 0xE0, 0x20, 0x09, 0x21, 0x09, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22,
0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE6, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0xE6, 0x21, 0x09,
0x11, 0xB3, 0x21, 0x19, 0x22, 0x07, 0x12, 0xB3, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE6,
0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE6, 0x10, 0x02, 0x20, 0x1B, 0x30, 0x11, 0x21, 0x09, 0x11,
0xCC, 0x21, 0x17, 0x22, 0x07, 0x12, 0xCC, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10,
0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10,
0x07, 0xE1, 0x10, 0x05, 0xE0, 0x10, 0x02, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0x22, 0x05, 0x12,
0x59, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0x0E, 0x20, 0xE0, 0x10, 0xFC, 0xE1,
0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE0, 0x21, 0x09,
0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0,
0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x21, 0x17, 0x22, 0x07,
0x12, 0xCC, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x10, 0x05, 0x0E, 0x20, 0xE0, 0x10, 0x07, 0xE1, 0x10,
0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10,
0x07, 0xE1, 0x10, 0x05, 0xE0, 0x20, 0x0B, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x09, 0x11, 0x59, 0x21,
0x19, 0x22, 0x05, 0x12, 0x59, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x25, 0xE0,
0x10, 0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0,
0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x20,
0x0B, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x07, 0x12, 0x02, 0x22,
0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20,
0x19, 0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10,
0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0xE0, 0x20, 0x0B, 0x10,
0xB3, 0x20, 0x19, 0x21, 0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22, 0x17, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB,
0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7,
0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x20, 0x09, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x09, 0x21,
0x19, 0x22, 0x07, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0,
0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21,
0x19, 0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1,
0x10, 0x05, 0xE0, 0x10, 0x02, 0x21, 0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22,
0x17, 0x0E, 0x21, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0x0E, 0x20, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF,
0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE0, 0x21, 0x09, 0x11, 0x02,
0x21, 0x19, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC,
0xE1, 0x10, 0xFF, 0xE0, 0x20, 0x09, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x09, 0x21, 0x19, 0x22, 0x07,
0x12, 0x02, 0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0,
0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0xE0, 0x10, 0x1F, 0xE0,
0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x10, 0x22, 0x21, 0x09,
0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0x1F, 0x0E,
0x20, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27,
0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F,
0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0x21, 0x09, 0x21, 0x19, 0x22, 0x07, 0x12,
0x02, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x10, 0x25, 0x0E, 0x20, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25,
0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19,
0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0,
0x10, 0x22, 0x21, 0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x21,
0xE0, 0x10, 0x1F, 0x0E, 0x20, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10,
0x25, 0xE0, 0x10, 0x27, 0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x25, 0xE0, 0x10,
0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x20, 0x0B, 0x21, 0x09, 0x11,
0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE6, 0x21,
0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19,
0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10,
0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17,
0xE0, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10,
0x05, 0xE0, 0x20, 0x0B, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05,
0x12, 0x59, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0,
0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0xAE, 0xE0,
0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x20, 0x09, 0x10, 0x83,
0x20, 0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21,
0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0,
0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0,
0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07, 0x11, 0x83,
0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x5D,
0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17,
0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0,
0x10, 0x59, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21,
0xE0, 0x10, 0x55, 0x0E, 0x20, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10,
0x5D, 0xE0, 0x10, 0x5F, 0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x5D, 0xE0, 0x10,
0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0x21, 0x07, 0x11,
0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x10, 0x5D, 0x0E, 0x20,
0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0,
0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x20, 0x09, 0x10, 0x46, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22,
0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x49,
0xE0, 0x10, 0x46, 0xE0, 0x10, 0x42, 0xE0, 0x10, 0x40, 0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17,
0xE0, 0x10, 0x42, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x49, 0xE0, 0x10, 0x4B, 0xE1, 0x10, 0x49, 0xE0,
0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3,
0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55,
0xE0, 0x10, 0x53, 0xE0, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59,
0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0x21, 0x09, 0x11, 0x46,
0x21, 0x19, 0x22, 0x03, 0x12, 0x46, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x55, 0x0E, 0x20, 0xE0,
0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE0, 0x21,
0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10,
0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12,
0xB3, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x10, 0x5D, 0x0E, 0x20, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D,
0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19,
0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0,
0x10, 0x59, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0x22, 0x03, 0x12, 0x46, 0x22, 0x15, 0x0E, 0x21,
0xE0, 0x10, 0x55, 0x0E, 0x20, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10,
0x5D, 0xE0, 0x10, 0x5F, 0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x5D, 0xE0, 0x10,
0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x20, 0x09, 0x21, 0x09, 0x11,
0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE6, 0x21,
0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02,
0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE6, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x10,
0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13, 0x0E,
0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB,
0xE0, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7,
0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22,
0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0xAE, 0x0E, 0x20, 0xE0, 0x10, 0xAB, 0xE1,
0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE0, 0x21, 0x09, 0x11, 0xB3,
0x21, 0x17, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE1, 0x10,
0xAE, 0xE0, 0x10, 0xB3, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15,
0x0E, 0x30, 0xE0, 0x10, 0xB7, 0x0E, 0x20, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x10, 0xB3,
0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0xE0, 0x10, 0xAE,
0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x20, 0x09, 0x10,
0x83, 0x20, 0x19, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x19, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C,
0xE0, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87,
0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x09, 0x21,
0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x5D, 0xE0,
0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0xE0,
0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x20,
0x09, 0x10, 0x46, 0x20, 0x19, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x19, 0x22, 0x07, 0x12, 0xB3, 0x22,
0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x49, 0xE0, 0x10, 0x46, 0xE0, 0x10, 0x42, 0xE0,
0x10, 0x40, 0xE0, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE0, 0x10, 0x42, 0xE0, 0x10, 0x46, 0xE0,
0x10, 0x49, 0xE0, 0x10, 0x4B, 0xE1, 0x10, 0x49, 0xE0, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21,
0x09, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x07, 0x12, 0xCC, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20,
0xE2, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1,
0x10, 0x5D, 0xE0, 0x10, 0x59, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0x22, 0x05, 0x12, 0x59, 0x22,
0x17, 0x0E, 0x21, 0xE0, 0x10, 0x55, 0x0E, 0x20, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10,
0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10,
0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x20, 0x09,
0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x21, 0x17, 0x22, 0x07, 0x12, 0xCC, 0x22, 0x15, 0x0E, 0x28,
0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0,
0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0,
0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x09, 0x11, 0x59,
0x21, 0x19, 0x22, 0x05, 0x12, 0x59, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7,
0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17,
0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0,
0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x07, 0x12, 0x02,
0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7,
0xE0, 0x10, 0xC4, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xCC,
0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE1, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0x21, 0x09, 0x11, 0x83,
0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0xC7, 0x0E, 0x20, 0xE0,
0x10, 0xC4, 0xE1, 0x10, 0xC7, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE0, 0x21,
0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7, 0xE0, 0x10,
0xC4, 0xE1, 0x10, 0xC7, 0xE0, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x09, 0x21, 0x19, 0x22,
0x07, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3,
0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x09, 0x11, 0x46, 0x21, 0x19, 0xE0, 0x10, 0xAE,
0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x20, 0x09, 0x10,
0x83, 0x20, 0x19, 0x21, 0x09, 0x11, 0x83, 0x21, 0x19, 0x22, 0x07, 0x12, 0x83, 0x22, 0x17, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C,
0xE0, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87,
0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x09, 0x11,
0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10,
0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE0, 0x21, 0x07, 0x11, 0xB3, 0x21,
0x17, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D,
0xE0, 0x10, 0x59, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x07, 0x12, 0x02, 0x22, 0x19, 0x0E,
0x21, 0xE0, 0x10, 0x55, 0x0E, 0x20, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0,
0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x5D, 0xE0,
0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0x21, 0x07,
0x11, 0x59, 0x21, 0x17, 0x22, 0x09, 0x12, 0x59, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x10, 0x5D, 0x0E,
0x20, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53,
0xE0, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D,
0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0xE0, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11,
0x02, 0x21, 0x19, 0x22, 0x07, 0x12, 0x02, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10,
0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21,
0x17, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87,
0xE0, 0xFF,
};
+184
View File
@@ -0,0 +1,184 @@
#include "msxgl.h"
// lVGM music track — tips/hints screen.
// Occupies the start of banked segment 27 (bank-2 window 0x8000-0x9FFF,
// via SET_BANK_SEGMENT(2, 27)). MSX-Music (YM2413/OPLL), 60 Hz, looping.
// 2792 bytes; the rest of the 8KB segment is unused padding.
// Access: LVGM_Play((const u8*)0x8000, TRUE) with segment 27 banked in.
const u8 g_MusHints[2792] = {
0x6C, 0x56, 0x47, 0x4D, 0x06, 0x02, 0xF1, 0x16, 0x20, 0xFE, 0x26, 0x05, 0x17, 0x50, 0x27, 0x05,
0x18, 0xC0, 0x28, 0x01, 0x56, 0x00, 0x0E, 0x20, 0x10, 0x83, 0x20, 0x19, 0x30, 0x71, 0x11, 0x83,
0x21, 0x17, 0x31, 0xC6, 0x12, 0x83, 0x22, 0x13, 0x32, 0xE3, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12,
0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6,
0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21,
0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0xB3, 0x22, 0x13, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07,
0x11, 0x83, 0x21, 0x17, 0x22, 0x03, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12,
0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6,
0x20, 0x0B, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83,
0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20,
0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0xB3, 0x22,
0x13, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE7, 0x20, 0x09,
0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x12, 0x21, 0x19, 0x22, 0x03, 0x12, 0x12, 0x22, 0x15,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0x83, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11,
0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21,
0x07, 0x11, 0x83, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11, 0x12,
0x21, 0x19, 0x22, 0x03, 0x12, 0x12, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09,
0x11, 0x83, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0xCC, 0x21,
0x17, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11,
0x83, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11, 0x12, 0x21, 0x19,
0x22, 0x05, 0x12, 0x12, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0x83,
0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x12,
0x21, 0x19, 0x22, 0x03, 0x12, 0x12, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09,
0x11, 0x83, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0x22, 0x22,
0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0xE6, 0x20, 0x09,
0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0xCC, 0x22, 0x13,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0xE6, 0x21, 0x09, 0x11,
0x59, 0x21, 0x19, 0x22, 0x03, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21,
0x09, 0x11, 0x22, 0x21, 0x19, 0xE6, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0xCC,
0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0xE6, 0x20,
0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22,
0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE6, 0x20, 0x09,
0x10, 0xB3, 0x20, 0x19, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0xCC, 0x22, 0x13,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0xE6, 0x21, 0x09, 0x11,
0x59, 0x21, 0x19, 0x22, 0x03, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21,
0x09, 0x11, 0x22, 0x21, 0x19, 0xE6, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x09, 0x11, 0xCC,
0x21, 0x17, 0x22, 0x05, 0x12, 0xCC, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07,
0x11, 0x22, 0x21, 0x19, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x09, 0x11, 0x59, 0x21,
0x19, 0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11,
0x22, 0x21, 0x19, 0xE7, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x09, 0x11, 0x59, 0x21, 0x17,
0x22, 0x05, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10,
0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE1, 0x10, 0xAE,
0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0x21, 0x07, 0x11, 0x02,
0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0xB3, 0x0E, 0x20, 0xE0,
0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE1, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0x21, 0x09,
0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE,
0xE0, 0x10, 0xAB, 0xE0, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13,
0x0E, 0x28, 0xE0, 0x10, 0xAE, 0x0E, 0x20, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA,
0xE1, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0xAE, 0xE0,
0x10, 0xAB, 0xE1, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0x21, 0x07,
0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0xB3, 0x22, 0x13, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE0,
0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE1, 0x10, 0xAE, 0x21, 0x09,
0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7,
0xE0, 0x10, 0xB3, 0xE0, 0x20, 0x09, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x03, 0x12, 0x59,
0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x21,
0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0x02, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE5, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x10, 0x22, 0x20, 0x1B, 0x30, 0x42, 0x21, 0x07,
0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2,
0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0x21, 0x07, 0x11, 0xB3, 0x21,
0x17, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25,
0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x03, 0x12, 0xB3, 0x22, 0x13, 0x0E, 0x21, 0xE0, 0x10,
0x22, 0x0E, 0x20, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0,
0x10, 0x25, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x10,
0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE0, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x03,
0x12, 0x83, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x10, 0x1F, 0x0E, 0x20, 0xE0, 0x10, 0x22, 0xE0, 0x10,
0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x10, 0x22, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17,
0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0,
0x20, 0x0B, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22,
0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F,
0xE0, 0x10, 0x1D, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0,
0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x20, 0x0B, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x83,
0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05,
0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0x21, 0x07, 0x11, 0xCC, 0x21,
0x17, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1,
0x10, 0x05, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0xB3, 0x22, 0x13, 0x0E, 0x21,
0xE0, 0x10, 0x02, 0x0E, 0x20, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF,
0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10,
0x07, 0xE1, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE0,
0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x03, 0x12, 0x83,
0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7,
0xE0, 0x10, 0xC4, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0xC7, 0xE0, 0x10, 0xCC, 0xE0,
0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE1, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22,
0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7,
0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE1,
0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x20, 0x09, 0x10, 0x83,
0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28,
0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0x21,
0x07, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10,
0x8A, 0xE1, 0x10, 0x87, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0xB3, 0x22, 0x13,
0x0E, 0x21, 0xE0, 0x10, 0x83, 0x0E, 0x20, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F,
0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x8A, 0xE1,
0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x20, 0x09, 0x10, 0xCC,
0x20, 0x19, 0x21, 0x07, 0x11, 0x12, 0x21, 0x19, 0x22, 0x03, 0x12, 0x12, 0x22, 0x15, 0x0E, 0x30,
0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xC4, 0x21,
0x09, 0x11, 0x83, 0x21, 0x17, 0xE1, 0x10, 0xC7, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xD1, 0xE0, 0x10,
0xD4, 0xE1, 0x20, 0x09, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05,
0x12, 0x83, 0x22, 0x13, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0,
0x10, 0x1F, 0xE0, 0x10, 0x1D, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0xE1, 0x10, 0x1F, 0xE0, 0x10,
0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x20, 0x0B, 0x10, 0x83, 0x20, 0x1B, 0x21, 0x07,
0x11, 0x12, 0x21, 0x19, 0x22, 0x03, 0x12, 0x12, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2,
0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0x21, 0x09, 0x11, 0x83, 0x21,
0x17, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10,
0x83, 0x0E, 0x20, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0,
0x10, 0x87, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10,
0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x07, 0x11, 0x12, 0x21, 0x19, 0x22, 0x05,
0x12, 0x12, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x10, 0x7F, 0x0E, 0x20, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0x21, 0x09, 0x11, 0x83, 0x21, 0x17,
0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0,
0x10, 0x8A, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x21,
0xE0, 0x0E, 0x20, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1,
0x10, 0x7F, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10,
0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x20, 0x0B, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07,
0x11, 0x12, 0x21, 0x19, 0x22, 0x03, 0x12, 0x12, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2,
0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0x21, 0x09, 0x11, 0x83, 0x21,
0x17, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10,
0x22, 0x0E, 0x20, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0,
0x10, 0x25, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x10,
0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE0, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05,
0x12, 0x02, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x10, 0x1F, 0x0E, 0x20, 0xE0, 0x10, 0x22, 0xE0, 0x10,
0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x10, 0x22, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19,
0x0E, 0x30, 0xE0, 0x10, 0x1F, 0x0E, 0x20, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22,
0xE0, 0x10, 0x25, 0xE0, 0x20, 0x0B, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19,
0x22, 0x05, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10,
0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE1,
0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x20, 0x0B,
0x10, 0xCC, 0x20, 0x19, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x15,
0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7, 0xE0, 0x10,
0xC4, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE1, 0x10, 0xC7, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xD1,
0xE0, 0x10, 0xD4, 0xE1, 0x10, 0xD1, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22,
0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0xCC, 0x0E, 0x20, 0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xC4, 0xE1,
0x10, 0xC7, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xD1, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE0, 0x10,
0xD4, 0xE1, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xC4, 0xE0, 0x20, 0x09,
0x10, 0xB3, 0x20, 0x19, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x15,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10,
0xAB, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE0, 0x10, 0xAE, 0xE0,
0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21,
0x09, 0x11, 0x59, 0x21, 0x19, 0x22, 0x05, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0x21, 0x09, 0x11, 0x22,
0x21, 0x19, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x20,
0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x09, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22,
0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0,
0x10, 0x7C, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0x22, 0x05, 0x12,
0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x83, 0x0E, 0x20, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C,
0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0x21, 0x09, 0x11, 0x22, 0x21, 0x19, 0xE0,
0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10,
0x7F, 0x21, 0x09, 0x21, 0x19, 0x22, 0x05, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x10, 0x83, 0x0E, 0x20,
0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0x21,
0x09, 0x11, 0x59, 0x21, 0x19, 0x0E, 0x30, 0xE0, 0x10, 0x7C, 0x0E, 0x20, 0xE1, 0x10, 0x7F, 0xE0,
0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE0, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x19, 0x22,
0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x87, 0x0E, 0x20, 0xE0, 0x10, 0x83, 0xE0,
0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0x21, 0x09, 0x11, 0x59, 0x21,
0x19, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F,
0xE0, 0x10, 0x7C, 0x21, 0x09, 0x11, 0x22, 0x21, 0x1B, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E,
0x28, 0xE0, 0x0E, 0x20, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A,
0xE1, 0x10, 0x87, 0x21, 0x0B, 0x11, 0x59, 0x21, 0x1B, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0,
0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0x21, 0x0B, 0x11, 0xB3, 0x21,
0x1B, 0x22, 0x05, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x8A, 0x0E, 0x20, 0xE1, 0x10,
0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x0B, 0x11, 0x59, 0x21,
0x1B, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87,
0xE0, 0x10, 0x83, 0x21, 0x0B, 0x11, 0x22, 0x21, 0x1D, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E,
0x30, 0xE0, 0x10, 0x7F, 0x0E, 0x20, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0,
0x10, 0x87, 0xE0, 0x10, 0x8A, 0x21, 0x0D, 0x11, 0x59, 0x21, 0x1D, 0x0E, 0x30, 0xE0, 0x0E, 0x20,
0xE0, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0x21,
0x0D, 0x11, 0xB3, 0x21, 0x1D, 0x22, 0x07, 0x12, 0xB3, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0x83,
0x0E, 0x20, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x7F, 0x21, 0x0D, 0x11, 0x59, 0x21, 0x1D, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83,
0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE0, 0xFF,
};
+215
View File
@@ -0,0 +1,215 @@
#include "msxgl.h"
// lVGM music track — gameplay (the maze).
// Occupies the start of banked segment 28 (bank-2 window 0x8000-0x9FFF,
// via SET_BANK_SEGMENT(2, 28)). MSX-Music (YM2413/OPLL), 60 Hz, looping.
// 3290 bytes; the rest of the 8KB segment is unused padding.
// Access: LVGM_Play((const u8*)0x8000, TRUE) with segment 28 banked in.
const u8 g_MusMaze[3290] = {
0x6C, 0x56, 0x47, 0x4D, 0x06, 0x02, 0xF1, 0x16, 0x20, 0xFE, 0x26, 0x05, 0x17, 0x50, 0x27, 0x05,
0x18, 0xC0, 0x28, 0x01, 0x56, 0x00, 0x0E, 0x20, 0x10, 0x83, 0x20, 0x19, 0x30, 0x44, 0x11, 0x83,
0x21, 0x17, 0x31, 0xC4, 0x12, 0x83, 0x22, 0x15, 0x32, 0xE4, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21,
0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x83,
0x21, 0x17, 0x22, 0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07,
0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x0B, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22, 0x21,
0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11,
0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07, 0x12, 0x83, 0x22, 0x15,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE4, 0x20, 0x09, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x10,
0x22, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x0B, 0x10, 0x02,
0x20, 0x1B, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x28,
0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE5, 0x20, 0x0B, 0x10, 0xCC, 0x20,
0x19, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17,
0x22, 0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC,
0x21, 0x17, 0xE6, 0x20, 0x09, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22,
0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE5, 0x10, 0xB3,
0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x28,
0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20,
0x19, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19,
0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E,
0x20, 0xE4, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22,
0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x20, 0x09, 0x21, 0x09, 0x11,
0xB3, 0x21, 0x17, 0xE6, 0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59,
0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x20,
0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22,
0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x20, 0x09,
0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x15,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11,
0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21,
0x09, 0x11, 0xB3, 0x21, 0x17, 0xE5, 0x20, 0x09, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07,
0x12, 0x59, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17,
0xE6, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07,
0x11, 0x22, 0x21, 0x17, 0x22, 0x07, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5,
0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE5, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11,
0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21,
0x07, 0x11, 0x59, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x22,
0x21, 0x17, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07,
0x11, 0x59, 0x21, 0x17, 0xE6, 0x20, 0x0B, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07, 0x11, 0xB3, 0x21,
0x17, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x07, 0x11,
0x59, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x15,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x20, 0x09, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x10,
0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x0B, 0x10, 0xCC,
0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x28,
0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xB3, 0x20,
0x19, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17,
0x22, 0x07, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xB3,
0x21, 0x17, 0xE5, 0x20, 0x09, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22,
0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x10, 0x83,
0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x28,
0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xB3, 0x20,
0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE5, 0x20, 0x09, 0x10, 0x59, 0x20, 0x19,
0x21, 0x07, 0x11, 0x22, 0x21, 0x17, 0x22, 0x07, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0x22,
0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x20, 0x09, 0x21, 0x07, 0x11,
0x59, 0x21, 0x17, 0xE6, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22, 0x21, 0x17, 0x22, 0x05, 0x12, 0x22,
0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE6, 0x20,
0x09, 0x10, 0x46, 0x20, 0x19, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3, 0x22,
0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE6, 0x20, 0x09,
0x10, 0x22, 0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x15,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21,
0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07,
0x12, 0x83, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17,
0xE6, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE5, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07,
0x11, 0x83, 0x21, 0x17, 0x22, 0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2,
0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0x21, 0x07, 0x11, 0xCC, 0x21,
0x17, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87,
0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10,
0x83, 0x0E, 0x20, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0,
0x10, 0x87, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10,
0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07,
0x12, 0x83, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x10, 0x7F, 0x0E, 0x20, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17,
0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x20, 0x09, 0x10,
0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB,
0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0,
0x10, 0xBA, 0xE1, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22,
0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0, 0x10, 0xCC,
0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xC4, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0xC7, 0xE0,
0x10, 0xCC, 0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE1, 0x10, 0xD1, 0x21, 0x07, 0x11, 0x22, 0x21,
0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0xCC, 0x0E, 0x20, 0xE0, 0x10,
0xC7, 0xE0, 0x10, 0xC4, 0xE1, 0x10, 0xC7, 0xE0, 0x10, 0xCC, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17,
0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE1, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7, 0xE0,
0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07, 0x12, 0x83,
0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE,
0xE0, 0x10, 0xAB, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0,
0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22,
0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87,
0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE1,
0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x20, 0x09, 0x10, 0x59,
0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x30,
0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0x21, 0x07, 0x11, 0xB3,
0x21, 0x17, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10,
0x5F, 0xE0, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21,
0xE0, 0x10, 0x5D, 0x0E, 0x20, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10,
0x55, 0xE0, 0x10, 0x59, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F,
0xE1, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0x21, 0x07, 0x11, 0x59,
0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE0, 0x10, 0x55,
0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x10, 0x5D, 0x21, 0x07, 0x11, 0xB3,
0x21, 0x17, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x20,
0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22,
0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0,
0x10, 0x7C, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21,
0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0,
0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE1, 0x10,
0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0x21, 0x07, 0x11,
0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0xB3, 0x0E, 0x20,
0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE1, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0x21,
0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0xBA, 0xE1, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10,
0xAE, 0xE0, 0x20, 0x09, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59, 0x22, 0x15,
0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE6, 0x10, 0xCC, 0x20,
0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xC4, 0x21, 0x09,
0x11, 0xB3, 0x21, 0x17, 0xE1, 0x10, 0xC7, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4,
0xE1, 0x20, 0x09, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x07, 0x12,
0x83, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x05, 0xE0, 0x10, 0x02, 0xE0, 0x10,
0xFF, 0x20, 0x19, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0,
0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE0, 0x21, 0x07, 0x11, 0x22, 0x21,
0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0x05, 0x0E, 0x20, 0xE0, 0x10,
0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE1, 0x10, 0xFF, 0xE0, 0x10, 0x02, 0x20,
0x1B, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05,
0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0x21, 0x07, 0x11, 0x83, 0x21,
0x17, 0x22, 0x07, 0x12, 0x83, 0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE0, 0x10, 0xFF, 0xE0,
0x10, 0x02, 0x20, 0x1B, 0xE0, 0x10, 0x05, 0xE0, 0x10, 0x07, 0xE1, 0x10, 0x05, 0x21, 0x07, 0x11,
0xCC, 0x21, 0x17, 0xE0, 0x10, 0x02, 0xE0, 0x10, 0xFF, 0x20, 0x19, 0xE0, 0x10, 0xFC, 0xE1, 0x10,
0xFF, 0xE0, 0x10, 0x02, 0x20, 0x1B, 0xE0, 0x20, 0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10,
0xD1, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xC7, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0xC4,
0xE1, 0x10, 0xC7, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE0, 0x20, 0x09, 0x10,
0xB3, 0x20, 0x19, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x07, 0x12, 0xCC, 0x22, 0x15, 0x0E,
0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB,
0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0xE1, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0,
0x10, 0xBA, 0xE1, 0x10, 0xB7, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x05, 0x12, 0x83, 0x22,
0x15, 0x0E, 0x21, 0xE0, 0x10, 0xB3, 0x0E, 0x20, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE1, 0x10,
0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE0, 0x10, 0xBA,
0xE1, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19,
0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0x21, 0x07, 0x11,
0xB3, 0x21, 0x17, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1,
0x20, 0x09, 0x10, 0x59, 0x20, 0x19, 0x21, 0x07, 0x11, 0x02, 0x21, 0x19, 0x22, 0x07, 0x12, 0xCC,
0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55,
0xE0, 0x10, 0x53, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x17, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0,
0x10, 0x5D, 0xE0, 0x10, 0x5F, 0xE1, 0x20, 0x09, 0x10, 0x22, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22,
0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x25,
0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE1,
0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE0, 0x21, 0x07, 0x11, 0xB3,
0x21, 0x17, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x10, 0x25, 0x0E, 0x20, 0xE0,
0x10, 0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0x21, 0x07,
0x11, 0x59, 0x21, 0x17, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0xE0, 0x10, 0x22,
0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0x21, 0x07, 0x11, 0x22, 0x21, 0x17, 0x22, 0x07, 0x12, 0x59,
0x22, 0x15, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25,
0xE0, 0x10, 0x27, 0xE1, 0x10, 0x25, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE0, 0x10, 0x22, 0xE0,
0x10, 0x1F, 0xE0, 0x10, 0x1D, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x20, 0x09, 0x10, 0x59,
0x20, 0x19, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x21,
0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x5D, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x55, 0x21, 0x07, 0x11, 0x59,
0x21, 0x17, 0xE0, 0x10, 0x53, 0xE1, 0x10, 0x55, 0xE0, 0x10, 0x59, 0xE0, 0x10, 0x5D, 0xE0, 0x10,
0x5F, 0xE0, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22, 0x21, 0x17, 0x22, 0x07,
0x12, 0xB3, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0,
0x10, 0x7F, 0xE0, 0x10, 0x7C, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE1, 0x10, 0x7F, 0xE0, 0x10,
0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17,
0x22, 0x05, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x83, 0x0E, 0x20, 0xE0, 0x10, 0x7F,
0xE0, 0x10, 0x7C, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0x21, 0x07, 0x11, 0x59,
0x21, 0x17, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10,
0x7C, 0xE0, 0x21, 0x07, 0x11, 0x22, 0x21, 0x17, 0x22, 0x05, 0x12, 0x02, 0x22, 0x17, 0x0E, 0x28,
0xE0, 0x10, 0x7F, 0x0E, 0x20, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10,
0x87, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C,
0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0x21, 0x07, 0x11, 0xB3, 0x21, 0x17, 0x22,
0x07, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x10, 0x8A, 0x0E, 0x20, 0xE1, 0x10, 0x87, 0xE0,
0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0, 0x10, 0x7C, 0xE0, 0x21, 0x07, 0x11, 0x59, 0x21, 0x17, 0xE0,
0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x10, 0x87, 0xE0, 0x20,
0x09, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x30, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE5, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19,
0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC,
0x21, 0x17, 0xE6, 0x10, 0xCC, 0x20, 0x19, 0x30, 0x64, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22,
0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0, 0x10, 0xCC,
0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xC4, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0xC7, 0xE0,
0x10, 0xCC, 0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE1, 0x20, 0x09, 0x10, 0x22, 0x20, 0x1B, 0x21,
0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x07, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE2, 0x10, 0x25, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x1F, 0xE0, 0x10, 0x1D, 0x21, 0x09, 0x11, 0xCC,
0x21, 0x17, 0xE1, 0x10, 0x1F, 0xE0, 0x10, 0x22, 0xE0, 0x10, 0x25, 0xE0, 0x10, 0x27, 0xE0, 0x20,
0x0B, 0x10, 0x83, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0x59, 0x22,
0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0x87, 0xE0, 0x10, 0x83, 0xE0, 0x10, 0x7F, 0xE0,
0x10, 0x7C, 0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10, 0x7F, 0xE0, 0x10, 0x83, 0xE0, 0x10,
0x87, 0xE0, 0x10, 0x8A, 0xE1, 0x20, 0x0B, 0x10, 0xCC, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x22, 0x21,
0x19, 0x22, 0x05, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE2, 0x10, 0xD1, 0xE0,
0x10, 0xCC, 0xE0, 0x10, 0xC7, 0xE0, 0x10, 0xC4, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE1, 0x10,
0xC7, 0xE0, 0x10, 0xCC, 0xE0, 0x10, 0xD1, 0xE0, 0x10, 0xD4, 0xE1, 0x20, 0x0B, 0x10, 0xB3, 0x20,
0x1B, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x28, 0xE0,
0x0E, 0x20, 0xE2, 0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0x21, 0x07, 0x11, 0xCC, 0x21,
0x17, 0xE0, 0x10, 0xAB, 0xE1, 0x10, 0xAE, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA,
0xE0, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x05, 0x12, 0x59, 0x22, 0x15, 0x0E, 0x21, 0xE0,
0x10, 0xB7, 0x0E, 0x20, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0x10, 0xAB, 0xE1, 0x10, 0xAE,
0xE0, 0x10, 0xB3, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE0, 0x10, 0xB7, 0xE0, 0x10, 0xBA, 0xE1,
0x10, 0xB7, 0xE0, 0x10, 0xB3, 0xE0, 0x10, 0xAE, 0xE0, 0xFF,
};
+132
View File
@@ -0,0 +1,132 @@
#include "msxgl.h"
// lVGM music track — victory screen.
// Occupies the start of banked segment 29 (bank-2 window 0x8000-0x9FFF,
// via SET_BANK_SEGMENT(2, 29)). MSX-Music (YM2413/OPLL), 60 Hz, looping.
// 1966 bytes; the rest of the 8KB segment is unused padding.
// Access: LVGM_Play((const u8*)0x8000, TRUE) with segment 29 banked in.
const u8 g_MusWin[1966] = {
0x6C, 0x56, 0x47, 0x4D, 0x06, 0x02, 0xF1, 0x16, 0x20, 0xFE, 0x26, 0x05, 0x17, 0x50, 0x27, 0x05,
0x18, 0xC0, 0x28, 0x01, 0x56, 0x00, 0x0E, 0x20, 0x10, 0x83, 0x20, 0x19, 0x30, 0x44, 0x11, 0x83,
0x21, 0x17, 0x31, 0xC4, 0x12, 0x83, 0x22, 0x13, 0x32, 0xE4, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5,
0x21, 0x07, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11,
0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21,
0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x83,
0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07,
0x11, 0xCC, 0x21, 0x17, 0xE6, 0x20, 0x0B, 0x10, 0x83, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22, 0x21,
0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11,
0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x83, 0x21, 0x17,
0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x07, 0x11, 0xCC,
0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0xCC, 0x21, 0x17, 0xE6, 0x21, 0x07, 0x11, 0x83,
0x21, 0x17, 0x22, 0x05, 0x12, 0x83, 0x22, 0x13, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x07,
0x11, 0xCC, 0x21, 0x17, 0xE5, 0x20, 0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x07, 0x11, 0x22, 0x21,
0x19, 0x22, 0x03, 0x12, 0x22, 0x22, 0x15, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11,
0xCC, 0x21, 0x17, 0xE6, 0x20, 0x09, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x07, 0x11, 0x22, 0x21, 0x19,
0x22, 0x05, 0x22, 0x15, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19,
0xE6, 0x21, 0x09, 0x11, 0xB3, 0x21, 0x19, 0x22, 0x05, 0x12, 0xB3, 0x22, 0x15, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x09, 0x11, 0x59, 0x21, 0x19, 0xE5, 0x20, 0x0B, 0x10, 0xB3, 0x20, 0x19,
0x21, 0x09, 0x11, 0x22, 0x21, 0x1B, 0x22, 0x05, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x0B, 0x11, 0x59, 0x21, 0x1B, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21,
0x0B, 0x11, 0xB3, 0x21, 0x1B, 0x22, 0x07, 0x12, 0xB3, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE5, 0x21, 0x0B, 0x11, 0x59, 0x21, 0x1B, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0B,
0x11, 0x22, 0x21, 0x1D, 0x22, 0x07, 0x12, 0x22, 0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE4,
0x21, 0x0D, 0x11, 0x59, 0x21, 0x1D, 0xE6, 0x21, 0x0D, 0x11, 0xB3, 0x21, 0x1D, 0x22, 0x07, 0x12,
0xB3, 0x22, 0x17, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0D, 0x11, 0x59, 0x21, 0x1D, 0xE6,
0x21, 0x0D, 0x11, 0x22, 0x21, 0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x0F, 0x11, 0x59, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x11, 0xB3, 0x21, 0x1F, 0x22,
0x09, 0x12, 0xB3, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x11, 0x59, 0x21,
0x1F, 0xE6, 0x20, 0x09, 0x21, 0x0F, 0x11, 0x22, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x83, 0x22, 0x17,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x11, 0x59, 0x21, 0x1F, 0xE6, 0x10, 0x22, 0x20,
0x1B, 0x21, 0x0F, 0x11, 0xB3, 0x21, 0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x11, 0x59, 0x21, 0x1F, 0xE5, 0x20, 0x0B, 0x10, 0x59, 0x20, 0x1B,
0x21, 0x0F, 0x11, 0xFF, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x0F, 0x21,
0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21,
0x1F, 0xE6, 0x20, 0x0B, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x83,
0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE5, 0x21, 0x0F, 0x21,
0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21,
0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0F, 0x21,
0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21,
0x1F, 0xE6, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x83,
0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21,
0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21,
0x1F, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x83,
0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10,
0xB3, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0F,
0x21, 0x1F, 0x22, 0x09, 0x12, 0x83, 0x22, 0x17, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F,
0x21, 0x1F, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x83,
0x22, 0x17, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21,
0x1F, 0x22, 0x07, 0x12, 0x22, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21,
0x1F, 0xE5, 0x20, 0x09, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x02, 0x22, 0x19, 0x0E, 0x30,
0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12,
0x83, 0x22, 0x19, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x10, 0x22,
0x20, 0x1B, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x02, 0x22, 0x1B, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B, 0x12, 0x83, 0x22,
0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0B, 0x12, 0x59, 0x22, 0x19, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F,
0xE6, 0x20, 0x0B, 0x20, 0x1B, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x02, 0x22, 0x1B, 0x0E,
0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0x02, 0x20, 0x1B,
0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B, 0x12, 0x59, 0x22, 0x19, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5,
0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22,
0x09, 0x12, 0x02, 0x22, 0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE5,
0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B, 0x12, 0x59, 0x22, 0x19,
0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20,
0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x02, 0x22, 0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0B, 0x12, 0x59, 0x22, 0x19, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F,
0xE5, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x02, 0x22, 0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0B, 0x12, 0x83, 0x22, 0x19, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F,
0xE6, 0x20, 0x09, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x22, 0x22,
0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0B, 0x12, 0x83, 0x22, 0x19, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F,
0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x22, 0x22, 0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20,
0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0B, 0x12, 0x83, 0x22, 0x19, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F,
0xE6, 0x20, 0x09, 0x10, 0xB3, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x22, 0x22,
0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0B, 0x12, 0x83, 0x22, 0x19, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F,
0xE5, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x22, 0x22,
0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0x59,
0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B, 0x12, 0x83, 0x22, 0x19, 0x0E, 0x30, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21, 0x0F, 0x21,
0x1F, 0x22, 0x09, 0x12, 0x22, 0x22, 0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21,
0x1F, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B, 0x12, 0x83, 0x22, 0x19, 0x0E, 0x28, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x22, 0x22,
0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0B, 0x12, 0x83, 0x22, 0x19, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F,
0xE6, 0x20, 0x09, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x22, 0x22, 0x1B, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B, 0x12, 0x83,
0x22, 0x19, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x19, 0x21,
0x0F, 0x21, 0x1F, 0x22, 0x09, 0x12, 0x22, 0x22, 0x1B, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21,
0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B,
0x22, 0x1B, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10,
0x22, 0x20, 0x1B, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0B, 0x12, 0xB3, 0x22, 0x1B, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE5, 0x20, 0x0B, 0x10, 0x59, 0x20, 0x1B, 0x21, 0x0F,
0x21, 0x1F, 0x22, 0x0B, 0x12, 0x22, 0x22, 0x1D, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F,
0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0x83, 0x20, 0x1B, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0D, 0x12,
0xB3, 0x22, 0x1D, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F,
0x21, 0x1F, 0x22, 0x0D, 0x12, 0x22, 0x22, 0x1D, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F,
0x21, 0x1F, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0D, 0x12, 0xB3, 0x22, 0x1D, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0x22, 0x20, 0x1B, 0x21, 0x0F,
0x21, 0x1F, 0x22, 0x0D, 0x12, 0x22, 0x22, 0x1F, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F,
0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0x02, 0x20, 0x1B, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x12,
0xB3, 0x22, 0x1F, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F,
0x21, 0x1F, 0x22, 0x0F, 0x12, 0x02, 0x22, 0x1F, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F,
0x21, 0x1F, 0xE6, 0x20, 0x0B, 0x10, 0xCC, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x12,
0x83, 0x22, 0x1F, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09,
0x10, 0xB3, 0x20, 0x19, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x12, 0xFF, 0x22, 0x1F, 0x0E, 0x28,
0xE0, 0x0E, 0x20, 0xE4, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x20, 0x09, 0x10, 0x83, 0x20, 0x19, 0x21,
0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x22, 0x1F, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21,
0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x12, 0x83, 0x22, 0x1F, 0x0E, 0x30, 0xE0, 0x0E,
0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x12, 0xFF, 0x22,
0x1F, 0x0E, 0x21, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0x21, 0x0F, 0x21, 0x1F,
0x22, 0x0F, 0x12, 0x83, 0x22, 0x1F, 0x0E, 0x28, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F,
0xE6, 0x20, 0x09, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x12, 0xFF, 0x22, 0x1F, 0x0E, 0x21, 0xE0,
0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0x22, 0x0F, 0x12, 0x83,
0x22, 0x1F, 0x0E, 0x30, 0xE0, 0x0E, 0x20, 0xE5, 0x21, 0x0F, 0x21, 0x1F, 0xE6, 0xFF,
};
+20
View File
@@ -48,3 +48,23 @@
#define INPUT_KB_UPDATE FALSE
#define INPUT_KB_UPDATE_MIN 0
#define INPUT_KB_UPDATE_MAX 8
// Music: screen tracks are lVGM (MSX-Music / YM2413 / OPLL). The PSG parser is
// kept so the player links cleanly, but the tracks carry only FM data.
// PSG: direct register access (no PSG_Apply needed) — no PSG data is ever played.
#define PSG_CHIP PSG_INTERNAL
#define PSG_ACCESS PSG_DIRECT
#define PSG_USE_NOTES FALSE
#define PSG_USE_EXTRA FALSE
#define PSG_USE_RESUME FALSE
// MSX-Music (the chip the music actually uses).
#define MSXMUSIC_USE_RESUME FALSE
// lVGM replayer: enable only the chips these tracks target (PSG parser + MSX-Music).
#define LVGM_USE_PSG TRUE // parser kept for clean linking; tracks carry no PSG data
#define LVGM_USE_MSXMUSIC TRUE // MSX-Music (OPLL) — the music format used
#define LVGM_USE_MSXAUDIO FALSE
#define LVGM_USE_SCC FALSE
#define LVGM_USE_SCCI FALSE
#define LVGM_USE_PSG2 FALSE
#define LVGM_USE_OPL4 FALSE
#define LVGM_USE_NOTIFY FALSE
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+5 -1
View File
@@ -2,7 +2,7 @@
ProjName = "mazegame";
ProjModules = [ ProjName ];
LibModules = [ "system", "bios", "vdp", "input" ];
LibModules = [ "system", "bios", "vdp", "input", "psg", "msx-music", "vgm/lvgm_player" ];
Machine = "2P";
Target = "ROM_KONAMI_SCC";
@@ -15,4 +15,8 @@ AppSignature = true;
AppCompany = "MZ";
AppID = "01";
// The screen music is MSX-Music (YM2413/OPLL). Give openMSX the FM-PAC extension
// so `./build.sh run` has an FM chip (real MSX2+ machines have MSX-Music built in).
EmulMSXMusic = true;
Verbose = true;