the cutting room mirror

Workboy

This article has a talk page!This article has a talk page!
view on tcrf.net

This page contains notes for the game Workboy.

All the offsets, their ranges and values are written in hexadecimal, except for value ranges and byte lengths that are written in decimal instead for better readability.

ROM#

In this section all the offsets refer to the cartridge ROM.

Where can be found?#

It can be found inside the platinum.7z 2020 Nintendo leak at platinum.7z\dmg_sgb.7z\DMG\POOL\DMGWYE-0.781 and has a SHA-256 of 8C365C5BC213DC002EB28F016D6C7C546DCEB05B51E3A8BF5703E586DB5BC45E.

Some emulators may complain when trying to run it as they fail to detect the ROM type by assuming that .781 is the file extension and not recognizing it. To fix it simply append the .gb extension after it.

Title Screen#

Offsets related to the introductory text displayed on the title screen can be found in the main article.

Saved Data#

In this section all the offsets refer to SRAM. The variable named n mentioned into the sections has a lower bound of 0 and an upper bound of 255, both inclusive.

Language#

The current language selected is stored at offset 0x01F9.

Language

Value

Language

0x00

English

0x01

German

0x02

French

0x03

Spanish

0x04

Italian

Calculator#

Its memory flag is stored at offset 0x0221: if its content is equal to 0x00 the memory is empty, otherwise there is a number stored in it. In normal circumstances the calculator uses 0x4D (ASCII "M" letter) to mark the memory as not empty and the corresponding character is displayed in the top-left of the calculator's screen.

The number is stored in SRAM at offsets 0x0222 - 0x022C as an ASCII string (maximum 10 characters long) including a trailing 0x00 value that acts as a string terminator.

Interestingly the routine that loads the stored number in RAM doesn't check if the string terminator falls in the offsets mentioned precedently, so if a string terminator cannot be found in that range SRAM offsets beyond 0x022C are read until a value of 0x00 is found, up to offset 0x1FFF.

Appointments#

An appointment is 66 bytes long and the total count, from 0 to 255, can be found at offset 0x0231.

Data for the nth appointment can be found by incrementing the following offsets by 0x42 * n.

0x0233: Day, from 1 to 31
0x0234: Month, from 1 (January) to 12 (December)
0x0235: Years since 1900, from 0 (year 1900) to 255 (year 2155)
    
0x0236: Hour, from 0 to 23
0x0237: Minutes, from 0 to 59
    
0x0238: Alarm and Countdown settings, see table below
    
0x0239 - 0x0274: Text, 60 characters long and zero-padded until the end if necessary

Alarm and Countdown#

Their relative data is stored in a single byte: the most significant nibble stores countdown data and the least significant one stores alarm data. Setting them to any other value causes glitched effects.

Most significant nibble (countdown)

Value

Effect

0x0

No countdown

0x1

1 day

0x2

2 days

0x3

3 days

0x4

4 days

0x5

5 days

0x6

6 days

0x7

7 days

0x8

8 days

0x9

9 days

Least significant nibble (alarm)

Value

Effect

0x0

No alarm

0x1

Beeper alarm

0x2

Birthday alarm

0x3

Christmas alarm

0x4

Priority alarm

E.g., for an appointment with a countdown of 8 days and a Christmas alarm, the value would be 0x83.

Phone Book#

A phone book entry is 140 bytes long and the total count, from 0 to 255, can be found at offset 0x2001.

Data for the nth phone book entry can be found by incrementing the following offsets by 0x8C * n:

0x2002 - 0x2079: Name and Address, 120 characters long and zero-padded until the end if necessary
0x207A - 0x208D: Telephone Number, 20 characters long and zero-padded until the end if necessary