the cutting room mirror

Mama Mitte

Mama Mitte is software that focusing on tracking pregnancy and assisting mothers in giving birth. The software was a pack-in with a specialized variant of the SwanCrystal.

Debugging Context#

Jump/Call Table#

The main jump/call table exists at 4000:15F1 (offset: 0x415F1) and is called at 4000:0270.

Debug Mode#

A debug mode routine exists at 4000:EDE0.

Flash Memory Test#

A flash memory test routine exists at 4000:F210.

Cartridge Check#

A cartridge check routine exists at 4000:5F98.

It is accessible during the intro using the correct keypress sequence.

PC Data Transfer#

A PC transfer routine exists at 6000:DF42.

It is accessible during the intro using the correct keypress sequence.

Calibration#

A calibration routine exists at 4000:AA3E.

It is accessible during the intro using the correct keypress sequence.

Factory Check#

A factory check routine exists at 4000:C8EE. They're similar to the calibration routine checks.

It is accessible during the intro using the correct keypress sequence.

WAV (RIFF)#

A WAV "parser" to DMA routine exists at 4000:11E0. It's used to play the intro vocal clip (offset: 0x90000).

Checksums and More#

There are various checks and bounds within the ROM to ensure the cartridge is running on a Mama Mitte console; The first, occurs at 4000:0224 and checks whether the last word of the internal EEPROM (word offset: 0x3FF) is 0x1234, while the second, occurs at 5000:E820 and checks whether the Swan ID (size: WORD) located in internal EEPROM (word offset: 0x3D) is the same as the value in ROM at F800:0025 (offset: 0xF8025). A factory restore will read and store the Swan ID from internal EEPROM.

There are also countermeasures to verify the ROM hasn't been modified by the way of calculating checksums (8-bit sum) on sections of data throughout the ROM; The hardcoded Swan ID being in one of those sections. A validation routine exists at 4000:13B6 with five WORD sums stored at F800:0002 (offset: 0xF8002); The first pertaining to the section where the Swan ID exists and the remaining four are for the four user slots.

A user slot is allocated 0xEEC of NOR space.

User Data

Slot

Offset

1

0xF8028

2

0xF8F14

3

0xF9E00

4

0xFACEC

A never written user slot is filled with 0xFF's, i.e. the NOR erased value.

MM-280 Debug Mode#

Mama_Mitte_debug_mode.png

Dated: 02/05/20

Tests the infrared functionality of the cartridge.

The routine offset 4000:EDE0 can be added to the end of call table at offset 0x41649 and called upon by setting 0x540 to the value 0x16.

Flash Memory Test#

Mama_Mitte_memory_test.png

Dated: 02/05/01

Tests the NOR flash functionality of the cartridge.

The routine offset 4000:F210 can be added to the end of call table at offset 0x41649 and called upon by setting 0x540 to the value 0x16.

Cartridge Check#

Mama_Mitte_cartridge_check.png

Dated: 02/07/22

PC Data Transfer#

Calibration#

Power On#

EEPROM Clear#

Impedance Adjustment#

Impedance Check#

Error Adjustment#

Error Check#

MM-280 Specification Check#

Altitude Adjustment#

ID Settings#

Adjustment Check#

Power Off#

Error Messages#

Checksum Failure#

Mama_Mitte_error_data_corrupted.png

Error message appears if the ROM fails checksum validations with an option to restore to factory defaults.

The display routine is located at 5000:E64D.

Swan ID Mismatch#

Mama_Mitte_error_exclusive.png

Error message appears if the Swan ID from internal EEPROM doesn't match the ROM value.

The conditional check and display routine is located at 5000:E807.

1234 Mismatch#

Mama_Mitte_error_exclusive_2.png

Error message appears if the last word of internal EEPROM doesn't match 0x1234. It's what you see when the cartridge is inserted in a non-mama Mitte SwanCrystal.

RTC Error#

Mama_Mitte_error_rtc.png

Error message appears if there is a clock malfunction.

The conditional check and display routine is located at 5000:E72D.

WAV (RIFF)#

Located at offset

Voice

Transcription

Translation

0xEC000

かかとを合わせて

Put your heels together.

0xED9E0

お乗りください

Please stand on the board.

0xEEE70

ママだけお乗りください

Please stand on the board only mom.

0xF0DA4

スワンを持たずに、赤ちゃんと一緒にお乗りください

Please stand on the board with baby without hold WonderSwan.