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.
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#
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#
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#
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#
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#
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#
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#
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. |