The Battle of Olympus:TBL

From Data Crystal
Jump to: navigation, search

Menu Table 1

This table is used while displaying the title screen, game over screen, and end credits.

01=a
02=b
03=c
04=d
05=e
06=f
07=g
08=h
09=i
0A=j
0B=k
0C=l
0D=m
0E=n
0F=o
10=p
11=q
12=r
13=s
14=t
15=u
16=v
17=w
18=x
19=y
1A=z
7F= 
A1=A
A2=B
A3=C
A4=D
A5=E
A6=F
A7=G
A8=H
A9=I
AA=J
AB=K
AC=L
AD=M
AE=N
AF=O
B0=P
B1=Q
B2=R
B3=S
B4=T
B5=U
B6=V
B7=W
B8=X
B9=Y
BA=Z
BB=.

Menu Table 2

This table is used while displaying the Yes/No dialogue options and instructions on the start/continue screens.

01=a
02=b
03=c
04=d
05=e
06=f
07=g
08=h
09=i
0A=j
0B=k
0C=l
0D=m
0E=n
0F=o
10=p
11=q
12=r
13=s
14=t
15=u
16=v
17=w
18=x
19=y
1A=z
7F= 
A0=0
A1=1
A2=2
A3=3
A4=4
A5=5
A6=6
A7=7
A8=8
A9=9
AA=?
AB=!
AC=.
AD=,
AE='
AF=-
B1=A
B2=B
B3=C
B4=D
B5=E
B6=F
B7=G
B8=H
B9=I
BA=J
BB=K
BC=L
BD=M
BE=N
BF=O
C0=P
C1=Q
C2=R
C3=S
C4=T
C5=U
C6=V
C7=W
C8=X
C9=Y
CA=Z

Main Script

The Battle of Olympus uses a relatively complex format for storing its main script. Pointers into the main script start off by reading a 1-byte index into a function jump table, with each function reading a certain amount of data before executing the next function. In order to successfully work with the complete script, you will need to be able to follow the embedded pointers used in the 01, 02, 03, 07, 0A, 0B, and 0C functions.

Function Table

00=<select the NPC specified by the next byte>
01=<if the quest status flag specified by the next byte is not set, skip the number of bytes specified by the byte after that>
02=<skip the number of bytes specified by the next byte>
03=<display the 1-byte Pascal string starting at the address specified by the next two bytes>
/04=<exit the script engine>
05=<set the quest status flag specified by the next byte>
06=<unset the quest status flag specified by the next byte>
07=<if the quest status flag specified by the next byte is set, skip the number of bytes specified by the byte after that>
08=<load/receive the item specified by the next byte>
/09=<display the 1-byte Pascal string then exit the script engine>
0A=<display yes/no option; if no selected, skip the number of bytes specified by the next byte>
0B=<if the current number of salamander skins < 20, skip the number of bytes specified by the next byte>
0C=<if the current number of olives < the amount specified by the next byte, skip the number of bytes specified by the byte after that>
/0D=<generate and display password then exit the script engine>
/0E=<recover health then exit the script engine>
/0F=<receive nectar then exit the script engine>

NPC Table

00=<Young woman with long hair in green dress>
01=<Young woman with hair in a bun in green dress>
02=<Bearded man in green tunic>
03=<Old bald man with green beard and staff>
04=<Child with green clothes>
05=<Young man in green tunic>
06=<Old hairy man with green beard and staff>
07=<Old woman with green hair and staff>

08=<Young woman with long hair in pink dress>
09=<Young woman with hair in a bun in pink dress>
0A=<Bearded man in pink tunic>
0B=<Old bald man with pink beard and staff>
0C=<Child with pink clothes>
0D=<Young man in pink tunic>
0E=<Old hairy man with pink beard and staff>
0F=<Old woman with pink hair and staff>

10=<Young woman with long hair in orange dress>
11=<Young woman with hair in a bun in orange dress>
12=<Bearded man in orange tunic>
13=<Old bald man with orange beard and staff>
14=<Child with orange clothes>
15=<Young man in orange tunic>
16=<Old hairy man with orange beard and staff>
17=<Old woman with orange hair and staff>

18=<Young woman with long hair in red dress>
19=<Young woman with hair in a bun in red dress>
1A=<Bearded man in red tunic>
1B=<Old bald man with red beard and staff>
1C=<Child with red clothes>
1D=<Young man in red tunic>
1E=<Old hairy man with red beard and staff>
1F=<Old woman with red hair and staff>

20=<Young woman with long hair in grey dress>
21=<Young woman with hair in a bun in grey dress>
22=<Bearded man in grey tunic>
23=<Old bald man with grey beard and staff>
24=<Child with grey clothes>
25=<Young man in grey tunic>
26=<Old hairy man with grey beard and staff>
27=<Old woman with grey hair and staff>

28=<Young woman with long hair in blue dress>
29=<Young woman with hair in a bun in blue dress>
2A=<Bearded man in blue tunic>
2B=<Old bald man with blue beard and staff>
2C=<Child with blue clothes>
2D=<Young man in blue tunic>
2E=<Old hairy man with blue beard and staff>
2F=<Old woman with blue hair and staff>

30=<Young woman with long hair in white dress>
31=<Young woman with hair in a bun in white dress>
32=<Bearded man in white tunic>
33=<Old bald man with white beard and staff>
34=<Child with white clothes>
35=<Young man in white tunic>
36=<Old hairy man with white beard and staff>
37=<Old woman with white hair and staff>

38=<Young woman with long hair in black dress>
39=<Young woman with hair in a bun in black dress>
3A=<Bearded man in black tunic>
3B=<Old bald man with black beard and staff>
3C=<Child with black clothes>
3D=<Young man in black tunic>
3E=<Old hairy man with black beard and staff>
3F=<Old woman with black hair and staff>

40=<Zeus>
41=<Female goddess>
42=<Male bearded god>
43=<Male beardless god>

60=<Fairy in pink dress>
61=<Fairy in green dress>
62=<Fairy in purple dress>
63=<Fairy in blue dress>

80=<nobody!>

C0=<2-block wall>

Quest Status Flags/Items Table

01=<have Staff of Fennel>
02=<have Nymph Sword>
03=<have Divine Sword
04=<have Apollo's Harp>
05=<have Poseidon's ocarina>
08=<have Artemis' Moon Orb>
09=<have Hermes' Sandals>
0A=<have Athena's Shield>
0B=<have Salamander Shield>
0C=<have Ares' Power Bracelet>
0D=<have Keleus' Key>
0E=<have Fragment of Love #1>
0F=<have Fragment of Love #2>
10=<have Fragment of Love #3>
12=<have talked to Zeus>
14=<flag $14>
16=<have Ambrosia #2>
17=<have Ambrosia #1>
18=<have Ambrosia #3>
1C=<flag $1C>
1F=<child rescued>
20=<missed Hermes>
21=<have upgraded Staff of Fennel>
22=<Hydra dead>

When displaying a 1-byte Pascal string, the displayed text is stored as a sequence of 5-bit tokens, so the below tables are in binary rather than hexadecimal; the Pascal length is defined by the number of 5-bit tokens in the string. Pascal strings start off using uppercase text.

Uppercase Table

00000=<switch to numbers table until the next 00000>
0000001011=?
0000001100=!
0000001101=.
0000001110=,
0000001111='
0000010000=-
00001=A
00010=B
00011=C
00100=D
00101=E
00110=F
00111=G
01000=H
01001=I
01010=J
01011=K
01100=L
01101=M
01110=N
01111=O
10000=P
10001=Q
10010=R
10011=S
10100=T
10101=U
10110=V
10111=W
11000=X
11001=Y
11010=Z
11011=<switch to lowercase table>
1110000000=<HERO>
1110000001=<HEROINE>
11101= 
11110=<LINE>\n
11111=<PAGE>\n

Lowercase Table

Note that 11111 also switches to the uppercase table!

00000=<switch to numbers table until the next 00000>
0000001011=?
0000001100=!
0000001101=.
0000001110=,
0000001111='
0000010000=-
00001=a
00010=b
00011=c
00100=d
00101=e
00110=f
00111=g
01000=h
01001=i
01010=j
01011=k
01100=l
01101=m
01110=n
01111=o
10000=p
10001=q
10010=r
10011=s
10100=t
10101=u
10110=v
10111=w
11000=x
11001=y
11010=z
11011=<switch to uppercase table>
1110000000=<HERO>
1110000001=<HEROINE>
11101= 
11110=<LINE>\n
11111=<PAGE>\n

Numbers Table

00001=0
00010=1
00011=2
00100=3
00101=4
00110=5
00111=6
01000=7
01001=8
01010=9


Internal Data for The Battle of Olympus

ROM MapRAM MapText TableNotesTutorials