2018-03-05 02:19:00 +00:00
# -*- coding: UTF-8 -*-
2018-04-19 01:17:40 +00:00
from collections import OrderedDict
import logging
2017-10-29 03:42:35 +00:00
text_addresses = { ' Pedestal ' : ( 0x180300 , 256 ) ,
2017-05-20 12:07:19 +00:00
' Triforce ' : ( 0x180400 , 256 ) ,
' Uncle ' : ( 0x180500 , 256 ) ,
' Ganon1 ' : ( 0x180600 , 256 ) ,
' Ganon2 ' : ( 0x180700 , 256 ) ,
' Blind ' : ( 0x180800 , 256 ) ,
' TavernMan ' : ( 0x180C00 , 256 ) ,
' Sahasrahla1 ' : ( 0x180A00 , 256 ) ,
' Sahasrahla2 ' : ( 0x180B00 , 256 ) ,
' BombShop1 ' : ( 0x180E00 , 256 ) ,
' BombShop2 ' : ( 0x180D00 , 256 ) ,
2017-07-14 21:32:40 +00:00
' PyramidFairy ' : ( 0x180900 , 256 ) ,
' EtherTablet ' : ( 0x180F00 , 256 ) ,
2017-07-17 16:04:24 +00:00
' BombosTablet ' : ( 0x181000 , 256 ) ,
' Ganon1Invincible ' : ( 0x181100 , 256 ) ,
' Ganon2Invincible ' : ( 0x181200 , 256 ) }
2017-05-20 12:07:19 +00:00
2018-01-02 02:17:17 +00:00
Uncle_texts = [
' Good Luck! \n You will need it. ' ,
' Forward this message to 10 other people or this seed will be awful. ' ,
' I hope you like your seeds bootless and fluteless. ' ,
' 10 \n 9 \n 8 \n 7 \n 6 \n 5 \n 4 \n 3 \n 2 \n 1 \n Go! ' ,
' I \' m off to visit cousin Fritzl. '
] * 2 + [
" We ' re out of \n Weetabix. To \n the store! " ,
" This seed is \n bootless \n until boots. " ,
" Why do we only \n have one bed? " ,
" This is the \n only textbox. " ,
" I ' m going to \n go watch the \n Moth tutorial. " ,
" This seed is \n the worst. " ,
" Chasing tail. \n Fly ladies. \n Do not follow. " ,
2018-08-04 20:29:07 +00:00
" I feel like \n I ' ve done this \n before… " ,
" Magic Cape can \n pass through \n the barrier! " ,
2018-01-02 02:17:17 +00:00
" If this is a \n Kanzeon seed, \n I ' m quitting. " ,
" I am not your \n real uncle. " ,
" You ' re going \n to have a very \n bad time. " ,
" Today you \n will have \n bad luck. " ,
" I am leaving \n forever. \n Goodbye. " ,
" Don ' t worry. \n I got this \n covered. " ,
" Race you to \n the castle! " ,
" \n hi " ,
" I ' M JUST GOING \n OUT FOR A \n PACK OF SMOKES " ,
" It ' s dangerous \n to go alone. \n See ya! " ,
" ARE YOU A BAD \n ENOUGH DUDE TO \n RESCUE ZELDA? " ,
" \n \n I AM ERROR " ,
" This seed is \n sub 2 hours, \n guaranteed. " ,
" The chest is \n a secret to \n everybody. " ,
" I ' m off to \n find the \n wind fish. " ,
" The shortcut \n to Ganon \n is this way! " ,
" THE MOON IS \n CRASHING! RUN \n FOR YOUR LIFE! " ,
" Time to fight \n he who must \n not be named. " ,
" RED MAIL \n IS FOR \n COWARDS. " ,
" HEY! \n \n LISTEN! " ,
" Well \n excuuuuuse me, \n princess! " ,
2018-08-04 20:29:07 +00:00
" 5,000 Rupee \n reward for > \n You ' re boned. " ,
2018-01-02 02:17:17 +00:00
" Welcome to \n Stoops Lonk ' s \n Hoose " ,
" Erreur de \n traduction. \n svp reessayer " ,
2018-08-04 20:29:07 +00:00
" I could beat \n it in an hour \n and one life. " ,
2018-01-02 02:17:17 +00:00
" I thought this \n was open mode? " ,
2018-08-04 20:29:07 +00:00
" Get to the \n chop... \n castle! " ,
" Come with me \n if you want \n to live " ,
" I must go \n my planet \n needs me " ,
2018-01-02 02:17:17 +00:00
]
Triforce_texts = [
' Product has Hole in center. Bad seller, 0 out of 5. ' ,
' Who stole the fourth triangle? ' ,
' Trifource? \n More Like Tritrice, am I right? '
' \n Well Done! ' ,
' You just wasted 2 hours of your life. ' ,
' This was meant to be a trapezoid '
] * 2 + [
" \n G G " ,
" All your base \n are belong \n to us. " ,
2018-08-04 20:29:07 +00:00
" You have ended \n the domination \n of Dr. Wily " ,
" thanks for \n playing!!! " ,
2018-01-02 02:17:17 +00:00
" \n You Win! " ,
2018-08-04 20:29:07 +00:00
" Thank you! \n your quest \n is over. " ,
" A winner \n is \n you! " ,
2018-01-02 02:17:17 +00:00
" \n WINNER!! " ,
2018-08-04 20:29:07 +00:00
" \n I ' m sorry \n \n but your \n princess is in \n another castle " ,
2018-01-02 02:17:17 +00:00
" \n success! " ,
2018-08-04 20:29:07 +00:00
" Whelp… \n that just \n happened " ,
" Oh hey… \n it ' s you " ,
2018-01-02 02:17:17 +00:00
" \n Wheeeeee!! " ,
2018-08-04 20:29:07 +00:00
" Time for \n another one? " ,
2018-01-02 02:17:17 +00:00
" and \n \n scene " ,
" \n GOT EM!! " ,
" \n THE VALUUUE!!! " ,
" Cool seed, \n \n right? " ,
" \n We did it! " ,
2018-08-04 20:29:07 +00:00
" Spam those \n emotes in \n wilds chat " ,
2018-01-02 02:17:17 +00:00
" \n O M G " ,
2018-08-04 20:29:07 +00:00
" Hello. Will \n you be my \n friend? " ,
" Beetorp \n was \n here! " ,
2018-01-02 02:17:17 +00:00
" The Wind Fish \n will wake \n soon. Hoot! " ,
" meow meow meow \n meow meow meow \n oh my god! " ,
" Ahhhhhhhhh \n Ya ya yaaaah \n Ya ya yaaah " ,
" .done \n \n .comment lol " ,
2018-08-04 20:29:07 +00:00
" You get to \n drink from \n the firehose " ,
" Do you prefer \n bacon, pork, \n or ham? " ,
" You get one \n wish. Choose \n wisely, hero! " ,
" Can you please \n break us three \n up? Thanks. " ,
" Pick us up \n before we \n get dizzy! " ,
2018-01-02 02:17:17 +00:00
]
2017-05-25 13:58:35 +00:00
BombShop2_texts = [ ' Bombs! \n Bombs! \n Biggest! \n Bestest! \n Greatest! \n Boomest! ' ]
2017-05-28 13:41:08 +00:00
Sahasrahla2_texts = [ ' You already got my item, idiot. ' , ' Why are you still talking to me? ' , ' This text won \' t change. ' , ' Have you met my brother, Hasarahshla? ' ]
2018-01-02 02:17:17 +00:00
Blind_texts = [
" I hate insect \n puns, they \n really bug me. " ,
2018-08-04 20:29:07 +00:00
" I haven ' t seen \n the eye doctor \n in years. " ,
" I don ' t see \n you having a \n bright future. " ,
2018-01-02 02:17:17 +00:00
" Are you doing \n a blind run \n of this game? " ,
2018-08-04 20:29:07 +00:00
" Pizza joke? No \n I think it ' s a \n bit too cheesy " ,
2018-01-02 02:17:17 +00:00
" A novice skier \n often jumps to \n contusions. " ,
2018-08-04 20:29:07 +00:00
" The beach? \n I ' m not shore \n I can make it. " ,
2018-01-02 02:17:17 +00:00
" Rental agents \n offer quarters \n for dollars. " ,
" I got my tires \n fixed for a \n flat rate. " ,
2018-08-04 20:29:07 +00:00
" New light bulb \n invented? \n Enlighten me. " ,
2018-01-02 02:17:17 +00:00
" A baker ' s job \n is a piece of \n cake. " ,
" My optometrist \n said I have \n vision! " ,
2018-08-04 20:29:07 +00:00
" When you ' re a \n baker, don ' t \n loaf around. " ,
" Mire requires \n Ether Quake, \n or Bombos. " ,
2018-01-02 02:17:17 +00:00
" Broken pencils \n are pointless. " ,
2018-09-23 02:51:54 +00:00
" The food they \n serve guards \n lasts sentries " ,
2018-08-04 20:29:07 +00:00
" Being crushed \n by big objects \n is depressing. " ,
2018-01-02 02:17:17 +00:00
" A tap dancer ' s \n routine runs \n hot and cold. " ,
2018-08-04 20:29:07 +00:00
" A weeknight is \n a tiny \n nobleman. " ,
2018-01-02 02:17:17 +00:00
" The chimney \n sweep wore a \n soot and tye. " ,
" Gardeners like \n to spring into \n action. " ,
2018-08-04 20:29:07 +00:00
" Bad at nuclear \n physics. I \n Got no fission " ,
" Flint and \n steel are a \n good match. " ,
" I ' d peg you \n as a fan of \n the hammer. " ,
" Archers give \n gifts tied \n with a bow. " ,
" A healed \n gambler is \n all better. " ,
" Any old sword \n will make the \n cut here. " ,
" Lazy wyrms \n keep dragon \n their feet. " ,
" Percussionist \n masters drum \n up audiences. " ,
" Retrievers \n love fetch \n quests. " ,
" Sausage is \n the wurst. " ,
" I tried to \n catch fog, \n but I mist. " ,
" Winter is a \n great time \n to chill. " ,
2018-09-23 02:51:54 +00:00
" Do you think \n the Ice Rod \n is cool? " ,
2018-01-02 02:17:17 +00:00
]
Ganon1_texts = [
2018-08-04 20:29:07 +00:00
" Start your day \n smiling with a \n delicious \n whole grain \n breakfast \n created for \n your \n incredible \n insides. " ,
" You drove \n away my other \n self, Agahnim, \n two times… \n But, I won ' t \n give you the \n Triforce. \n I ' ll defeat \n you! " ,
" Impa says that \n the mark on \n your hand \n means that you \n are the hero \n chosen to \n awaken Zelda. \n Your blood can \n resurrect me. " ,
" Don ' t stand, \n \n don ' t stand so \n Don ' t stand so \n \n close to me \n Don ' t stand so \n close to me \n Back off buddy " ,
2018-01-02 02:17:17 +00:00
" So ya \n Thought ya \n Might like to \n go to the show \n To feel the \n warm thrill of \n confusion \n That space \n cadet glow. " ,
2018-08-04 20:29:07 +00:00
" Like other \n pulmonate land \n gastropods, \n the majority \n of land slugs \n have two pairs \n of ' feelers ' \n ,or tentacles, \n on their head. " ,
2018-01-02 02:17:17 +00:00
" If you were a \n burrito, what \n kind of a \n burrito would \n you be? \n Me, I fancy I \n would be a \n spicy barbacoa \n burrito. " ,
" I am your \n father ' s \n brother ' s \n nephew ' s \n cousin ' s \n former \n roommate. What \n does that make \n us, you ask? " ,
" I ' ll be more \n eager about \n encouraging \n thinking \n outside the \n box when there \n is evidence of \n any thinking \n inside it. " ,
" If we ' re not \n meant to have \n midnight \n snacks, then \n why is there \n a light in the \n fridge? \n " ,
" I feel like we \n keep ending up \n here. \n \n Don ' t you? \n \n It ' s like \n deja vu \n all over again " ,
" Did you know? \n The biggest \n and heaviest \n cheese ever \n produced \n weighed \n 57,518 pounds \n and was 32 \n feet long. " ,
" Now there was \n a time, When \n you loved me \n so. I couldn ' t \n do wrong, \n And now you \n need to know. \n So How you \n like me now? " ,
" Did you know? \n Nutrition \n experts \n recommend that \n at least half \n of our daily \n grains come \n from whole \n grain products " ,
2018-03-05 02:19:00 +00:00
" The Hemiptera \n or true bugs \n are an order \n of insects \n covering 50k \n to 80k species \n like aphids, \n cicadas, and \n shield bugs. " ,
2018-08-04 20:29:07 +00:00
" Thanks for \n dropping in. \n The first \n passengers \n in a hot \n air balloon \n were a duck, \n a sheep, \n and a rooster. " ,
" You think you \n are so smart? \n \n I bet you \n didn ' t know \n you can ' t hum \n while holding \n your nose \n closed. " ,
" grumble, \n \n grumble… \n grumble, \n \n grumble… \n Seriously, you \n were supposed \n to bring food. " ,
" Join me hero, \n and I shall \n make your face \n the greatest \n in the Dark \n World! \n \n Or else you \n will die! " ,
" Why rule over \n a desert full \n of stereotypes \n when I can \n corrupt a \n world into \n pure evil and \n rule over \n that instead? " ,
" When I conquer \n the Light \n World, I ' ll \n hold a parade \n of all my \n monsters to \n demonstrate my \n might to the \n people! " ,
" Life, dreams, \n hope... \n Where ' d they \n come from? And \n where are they \n headed? These \n things... I am \n going to \n destroy! " ,
" My minions all \n failed to \n guard those \n items?! \n \n Why am I \n surrounded by \n incompetent \n fools?! " ,
2018-01-02 02:17:17 +00:00
]
TavernMan_texts = [
2018-08-04 20:29:07 +00:00
" What do you \n call a blind \n dinosaur? \n a doyouthink- \n hesaurus. " ,
" A blind man \n walks into \n a bar. \n And a table. \n And a chair. " ,
" What do ducks \n like to eat? \n \n Quackers! " ,
" How do you \n set up a party \n in space? \n \n You planet! " ,
" I ' m glad I \n know sign \n language. \n It ' s pretty \n handy. " ,
" What did Zelda \n say to Link at \n a secure door? \n \n TRIFORCE! " ,
2018-01-02 02:17:17 +00:00
" I am on a \n seafood diet. \n \n Every time \n I see food, \n I eat it. " ,
2019-01-20 07:01:02 +00:00
" I ' ve decided \n to sell my \n vacuum. \n It was just \n gathering \n dust. " ,
" What ' s the best \n time to go to \n the dentist? \n \n Tooth-hurtie! " ,
" Why can ' t a \n bike stand on \n its own? \n \n It ' s two-tired! " ,
" If you haven ' t \n found Quake \n yet… \n it ' s not your \n fault. " ,
" Why is Peter \n Pan always \n flying? \n Because he \n Neverlands! " ,
" I once told a \n joke to Armos. \n \n But he \n remained \n stone-faced! " ,
" Lanmola was \n late to our \n dinner party. \n He just came \n for the desert " ,
" Moldorm is \n such a \n prankster. \n And I fall for \n it every time! " ,
" Helmasaur is \n throwing a \n party. \n I hope it ' s \n a masquerade! " ,
" I ' d like to \n know Arrghus \n better. \n But he won ' t \n come out of \n his shell! " ,
" Mothula didn ' t \n have much fun \n at the party. \n He ' s immune to \n spiked punch! " ,
" Don ' t set me \n up with that \n chick from \n Steve ' s Town. \n \n \n I ' m not \n interested in \n a Blind date! " ,
" Kholdstare is \n afraid to go \n to the circus. \n Hungry kids \n thought he was \n cotton candy! " ,
" I asked who \n Vitreous ' best \n friends are. \n He said, \n ' Me, Myself, \n and Eye! ' " ,
" Trinexx can be \n a hothead or \n he can be an \n ice guy. In \n the end, he ' s \n a solid \n individual! " ,
" Bari thought I \n had moved out \n of town. \n He was shocked \n to see me! " ,
" I can only get \n Weetabix \n around here. \n I have to go \n to Steve ' s \n Town for Count \n Chocula! " ,
" Don ' t argue \n with a frozen \n Deadrock. \n He ' ll never \n change his \n position! " ,
" I offered a \n drink to a \n self-loathing \n Ghini. \n He said he \n didn ' t like \n spirits! " ,
" I was supposed \n to meet Gibdo \n for lunch. \n But he got \n wrapped up in \n something! " ,
" Goriya sure \n has changed \n in this game. \n I hope he \n comes back \n around! " ,
" Hinox actually \n wants to be a \n lawyer. \n Too bad he \n bombed the \n Bar exam! " ,
" I ' m surprised \n Moblin ' s tusks \n are so gross. \n He always has \n his Trident \n with him! " ,
" Don ' t tell \n Stalfos I ' m \n here. \n He has a bone \n to pick with \n me! " ,
" I got \n Wallmaster to \n help me move \n furniture. \n He was really \n handy! " ,
" Wizzrobe was \n just here. \n He always \n vanishes right \n before we get \n the check! " ,
" I shouldn ' t \n have picked up \n Zora ' s tab. \n That guy \n drinks like \n a fish! " ,
" I was sharing \n a drink with \n Poe. \n For no reason, \n he left in a \n heartbeat! " ,
" Don ' t trust \n horsemen on \n Death Mountain. \n They ' re Lynel \n the time! " ,
" Today ' s \n special is \n battered bat. \n Got slapped \n for offering a \n lady a Keese! " ,
" Don ' t walk \n under \n propellered \n pineapples. \n You may end up \n wearing \n a pee hat! " ,
" My girlfriend \n burrowed under \n the sand. \n So I decided \n to Leever! " ,
" Geldman wants \n to be a \n Broadway star. \n He ' s always \n practicing \n Jazz Hands! " ,
" Octoballoon \n must be mad \n at me. \n He blows up \n at the sight \n of me! " ,
" Toppo is a \n total pothead. \n \n He hates it \n when you take \n away his grass " ,
" I lost my \n shield by \n that house. \n Why did they \n put up a \n Pikit fence?! " ,
" Know that fox \n in Steve ' s \n Town? \n He ' ll Pikku \n pockets if you \n aren ' t careful " ,
" Dash through \n Dark World \n bushes. \n You ' ll see \n Ganon is tryin \n to Stal you! " ,
" Eyegore! \n \n You gore! \n We all gore \n those jerks \n with arrows! " ,
" I like my \n whiskey neat. \n \n Some prefer it \n Octoroks! " ,
" I consoled \n Freezor over a \n cup of coffee. \n His problems \n just seemed to \n melt away! " ,
" Magic droplets \n of water don ' t \n shut up. \n They just \n Kyameron! " ,
" I bought hot \n wings for \n Sluggula. \n They gave him \n explosive \n diarrhea! " ,
" Hardhat Beetle \n won ' t \n Let It Be? \n Tell it to Get \n Back or give \n it a Ticket to \n Ride down \n a hole! " ,
]
junk_texts = [
2019-01-23 09:04:42 +00:00
" It’ s a secret \n to everybody. \n > " ,
" Dodongo \n dislikes \n smoke. > " ,
" > Digdogger \n hates certain \n kind of sound. " ,
" I bet you’ d \n like to have \n more bombs. > " ,
" >Secret power \n is said to be \n in the arrow. " ,
" Aim at the \n eyes of Gohma. \n > " ,
" Grumble, \n grumble… \n > " ,
" 10th enemy \n has the bomb. \n > " ,
" Go to the \n next room. \n > " ,
" >Thanks, @ \n You’ re the \n hero of Hyrule " ,
" There’ s always \n money in the \n Banana Stand> " ,
" \n Just walk away \n > " ,
" everybody is \n looking for \n something > " ,
" Candy Is Dandy \n But liquor \n Is quicker. > " ,
" Spring Ball \n are behind \n Ridley > " ,
" The gnome asks \n you to guess \n his name. > " ,
" I heard beans \n on toast is a \n great meal. > " ,
" > Sweetcorn \n on pizza is a \n great choice. " ,
" > race roms \n don’ t have \n spoiler logs " ,
" I bet a nice \n cup of tea \n would help! > " ,
" I bet you \n expected help, \n didn ' t you? > " ,
" Learn to make \n plogues, easy \n and yummy! > "
2018-01-02 02:17:17 +00:00
]
2017-05-25 13:58:35 +00:00
2018-01-02 02:17:17 +00:00
KingsReturn_texts = [
' Who is this even ' ,
' The Harem '
] * 2 + [
" the return of the king " ,
" fellowship of the ring " ,
" the two towers " ,
]
Sanctuary_texts = [
' A Priest \' s love '
] * 2 + [
" the loyal priest " ,
" read a book " ,
" sits in own pew " ,
]
Sahasrahla_names = [
" sahasralah " , " sabotaging " , " sacahuista " , " sacahuiste " , " saccharase " , " saccharide " , " saccharify " ,
" saccharine " , " saccharins " , " sacerdotal " , " sackcloths " , " salmonella " , " saltarelli " , " saltarello " ,
" saltations " , " saltbushes " , " saltcellar " , " saltshaker " , " salubrious " , " sandgrouse " , " sandlotter " ,
" sandstorms " , " sandwiched " , " sauerkraut " , " schipperke " , " schismatic " , " schizocarp " , " schmalzier " ,
" schmeering " , " schmoosing " , " shibboleth " , " shovelnose " , " sahananana " , " sarararara " , " salamander " ,
2018-08-04 20:29:07 +00:00
" sharshalah " , " shahabadoo " , " sassafrass " , " saddlebags " , " sandalwood " , " shagadelic " , " sandcastle " ,
2018-09-23 02:51:54 +00:00
" saltpeters " , " shabbiness " , " shlrshlrsh " , " sassyralph " , " sallyacorn " ,
2018-01-02 02:17:17 +00:00
]
Kakariko_texts = [ " {} ' s homecoming " ]
Blacksmiths_texts = [
' frogs for bread ' ,
' That \' s not a sword ' ,
' The Rupeesmiths '
] * 1 + [
" the dwarven breadsmiths "
]
DeathMountain_texts = [
" the lost old man " ,
" gary the old man " ,
" Your ad here "
]
LostWoods_texts = [
' thieves \' stump ' ,
' He \' s got wood ' ,
] * 2 + [
" the forest thief " ,
" dancing pickles " ,
" flying vultures " ,
]
WishingWell_texts = [
" venus. queen of faeries " ,
" Venus was her name " ,
" I ' m your Venus " ,
" Yeah, baby, shes got it " ,
" Venus, I ' m your fire " ,
" Venus, At your desire " ,
2018-08-04 20:29:07 +00:00
" Venus Love Chain " ,
" Venus Crescent Beam " ,
2018-01-02 02:17:17 +00:00
]
DesertPalace_texts = [ ' vultures rule the desert ' , ' literacy moves ' ]
MountainTower_texts = [ ' the bully makes a friend ' , ' up up and away ' ]
LinksHouse_texts = [ ' your uncle recovers ' , ' Home Sweet Home ' , ' Only one bed ' ]
Lumberjacks_texts = [
' Chop Chop '
] * 2 + [
" twin lumberjacks " ,
" fresh flapjacks " ,
" two woodchoppers " ,
" double lumberman " ,
" lumberclones " ,
" woodfellas " ,
2018-08-04 20:29:07 +00:00
" dos axes " ,
2018-01-02 02:17:17 +00:00
]
2017-05-25 13:58:35 +00:00
SickKid_texts = [ ' Next Time Stay Down ' ]
2017-05-28 13:41:08 +00:00
Zora_texts = [ ' Splashes For Sale ' , ' Slippery when wet ' ]
MagicShop_texts = [ ' Drug deal ' , ' Shrooms for days ' ]
2017-05-25 13:58:35 +00:00
FluteBoy_texts = [ ' Stumped ' ]
2017-11-05 04:06:00 +00:00
class Credits ( object ) :
def __init__ ( self ) :
self . credit_scenes = {
' castle ' : [
SceneSmallCreditLine ( 19 , ' The return of the King ' ) ,
SceneLargeCreditLine ( 23 , ' Hyrule Castle ' ) ,
] ,
2018-08-04 20:29:07 +00:00
' sanctuary ' : [
2017-11-05 04:06:00 +00:00
SceneSmallCreditLine ( 19 , ' The loyal priest ' ) ,
SceneLargeCreditLine ( 23 , ' Sanctuary ' ) ,
] ,
' kakariko ' : [
SceneSmallCreditLine ( 19 , " Sahasralah ' s Homecoming " ) ,
SceneLargeCreditLine ( 23 , ' Kakariko Town ' ) ,
] ,
' desert ' : [
SceneSmallCreditLine ( 19 , ' vultures rule the desert ' ) ,
SceneLargeCreditLine ( 23 , ' Desert Palace ' ) ,
] ,
' hera ' : [
SceneSmallCreditLine ( 19 , ' the bully makes a friend ' ) ,
SceneLargeCreditLine ( 23 , ' Mountain Tower ' ) ,
] ,
' house ' : [
SceneSmallCreditLine ( 19 , ' your uncle recovers ' ) ,
SceneLargeCreditLine ( 23 , ' Your House ' ) ,
] ,
' zora ' : [
SceneSmallCreditLine ( 19 , ' finger webs for sale ' ) ,
SceneLargeCreditLine ( 23 , " Zora ' s Waterfall " ) ,
] ,
' witch ' : [
SceneSmallCreditLine ( 19 , ' the witch and assistant ' ) ,
SceneLargeCreditLine ( 23 , ' Magic Shop ' ) ,
] ,
' lumberjacks ' : [
SceneSmallCreditLine ( 19 , ' twin lumberjacks ' ) ,
SceneLargeCreditLine ( 23 , " Woodsmen ' s Hut " ) ,
] ,
' grove ' : [
SceneSmallCreditLine ( 19 , ' ocarina boy plays again ' ) ,
SceneLargeCreditLine ( 23 , ' Haunted Grove ' ) ,
] ,
' well ' : [
SceneSmallCreditLine ( 19 , ' venus, queen of faeries ' ) ,
SceneLargeCreditLine ( 23 , ' Wishing Well ' ) ,
] ,
' smithy ' : [
SceneSmallCreditLine ( 19 , ' the dwarven swordsmiths ' ) ,
SceneLargeCreditLine ( 23 , ' Smithery ' ) ,
] ,
' kakariko2 ' : [
SceneSmallCreditLine ( 19 , ' the bug-catching kid ' ) ,
SceneLargeCreditLine ( 23 , ' Kakariko Town ' ) ,
] ,
' bridge ' : [
SceneSmallCreditLine ( 19 , ' the lost old man ' ) ,
SceneLargeCreditLine ( 23 , ' Death Mountain ' ) ,
] ,
' woods ' : [
SceneSmallCreditLine ( 19 , ' the forest thief ' ) ,
SceneLargeCreditLine ( 23 , ' Lost Woods ' ) ,
] ,
' pedestal ' : [
SceneSmallCreditLine ( 19 , ' and the master sword ' ) ,
SceneSmallAltCreditLine ( 21 , ' sleeps again... ' ) ,
2017-11-12 00:03:42 +00:00
SceneLargeCreditLine ( 23 , ' Forever! ' ) ,
2017-11-05 04:06:00 +00:00
] ,
}
2017-05-25 13:58:35 +00:00
2018-08-04 20:29:07 +00:00
self . scene_order = [ ' castle ' , ' sanctuary ' , ' kakariko ' , ' desert ' , ' hera ' , ' house ' , ' zora ' , ' witch ' ,
2017-11-05 04:06:00 +00:00
' lumberjacks ' , ' grove ' , ' well ' , ' smithy ' , ' kakariko2 ' , ' bridge ' , ' woods ' , ' pedestal ' ]
2017-05-25 13:58:35 +00:00
2017-12-17 05:25:46 +00:00
def update_credits_line ( self , scene , line , text ) :
2017-11-05 04:06:00 +00:00
scenes = self . credit_scenes
2017-05-25 13:58:35 +00:00
2017-11-05 04:06:00 +00:00
text = text [ : 32 ]
scenes [ scene ] [ line ] . text = text
2017-05-25 13:58:35 +00:00
2017-11-05 04:06:00 +00:00
def get_bytes ( self ) :
pointers = [ ]
data = bytearray ( )
for scene_name in self . scene_order :
scene = self . credit_scenes [ scene_name ]
pointers . append ( len ( data ) )
2017-05-20 12:07:19 +00:00
2017-11-05 04:06:00 +00:00
for part in scene :
data + = part . as_bytes ( )
2017-05-20 12:07:19 +00:00
2017-11-05 04:06:00 +00:00
pointers . append ( len ( data ) )
return ( pointers , data )
class CreditLine ( object ) :
""" Base class of credit lines """
2017-11-19 01:43:37 +00:00
2017-11-05 04:06:00 +00:00
def __init__ ( self , text , align = ' center ' ) :
self . text = text
self . align = align
2017-11-19 01:43:37 +00:00
2017-11-05 04:06:00 +00:00
@property
def x ( self ) :
x = 0
if self . align == ' left ' :
x = 0
elif self . align == ' right ' :
x = 32 - len ( self . text )
else : # center
x = ( 32 - len ( self . text ) ) / / 2
return x
2017-11-19 01:43:37 +00:00
2017-11-05 04:06:00 +00:00
class SceneCreditLine ( CreditLine ) :
""" Base class for credit lines for the scene portion of the credits """
def __init__ ( self , y , text , align = ' center ' ) :
self . y = y
2017-12-17 05:25:46 +00:00
super ( ) . __init__ ( text , align )
2017-11-05 04:06:00 +00:00
def header ( self , x = None , y = None , length = None ) :
if x is None :
x = self . x
if y is None :
y = self . y
if length is None :
length = len ( self . text )
header = ( 0x6000 | ( y >> 5 << 11 ) | ( ( y & 0x1F ) << 5 ) | ( x >> 5 << 10 ) | ( x & 0x1F ) ) << 16 | ( length * 2 - 1 )
return bytearray ( [ header >> 24 & 0xFF , header >> 16 & 0xFF , header >> 8 & 0xFF , header & 0xFF ] )
class SceneSmallCreditLine ( SceneCreditLine ) :
def as_bytes ( self ) :
buf = bytearray ( )
buf . extend ( self . header ( ) )
buf . extend ( GoldCreditMapper . convert ( self . text ) )
# handle upper half of apostrophe character if present
if " ' " in self . text :
apos = " " . join ( [ ' , ' if x == " ' " else ' ' for x in self . text ] )
buf . extend ( self . header ( self . x + apos . index ( ' , ' ) , self . y - 1 , len ( apos . strip ( ) ) ) )
buf . extend ( GoldCreditMapper . convert ( apos . strip ( ) ) )
# handle lower half of comma character if present
if ' , ' in self . text :
commas = " " . join ( [ " ' " if x == ' , ' else ' ' for x in self . text ] )
buf . extend ( self . header ( self . x + commas . index ( " ' " ) , self . y + 1 , len ( commas . strip ( ) ) ) )
buf . extend ( GoldCreditMapper . convert ( commas . strip ( ) ) )
return buf
class SceneSmallAltCreditLine ( SceneCreditLine ) :
def as_bytes ( self ) :
buf = bytearray ( )
buf + = self . header ( )
buf + = GreenCreditMapper . convert ( self . text )
return buf
class SceneLargeCreditLine ( SceneCreditLine ) :
def as_bytes ( self ) :
buf = bytearray ( )
buf + = self . header ( )
buf + = LargeCreditTopMapper . convert ( self . text )
buf + = self . header ( self . x , self . y + 1 )
buf + = LargeCreditBottomMapper . convert ( self . text )
return buf
2018-03-10 23:45:14 +00:00
class MultiByteTextMapper ( object ) :
@classmethod
def convert ( cls , text , maxbytes = 256 ) :
outbuf = MultiByteCoreTextMapper . convert ( text )
# check for max length
if len ( outbuf ) > maxbytes - 2 :
outbuf = outbuf [ : maxbytes - 2 ]
# Note: this could crash if the last byte is part of a two byte command
# depedning on how well the command handles a value of 0x7F.
# Should probably do something about this.
outbuf . append ( 0x7F )
outbuf . append ( 0x7F )
return outbuf
class MultiByteCoreTextMapper ( object ) :
special_commands = {
" {SPEED0} " : [ 0x7A , 0x00 ] ,
2018-04-19 01:17:40 +00:00
" {SPEED1} " : [ 0x7A , 0x01 ] ,
2018-03-10 23:45:14 +00:00
" {SPEED2} " : [ 0x7A , 0x02 ] ,
" {SPEED6} " : [ 0x7A , 0x06 ] ,
" {PAUSE1} " : [ 0x78 , 0x01 ] ,
" {PAUSE3} " : [ 0x78 , 0x03 ] ,
" {PAUSE5} " : [ 0x78 , 0x05 ] ,
" {PAUSE7} " : [ 0x78 , 0x07 ] ,
" {PAUSE9} " : [ 0x78 , 0x09 ] ,
" {INPUT} " : [ 0x7E ] ,
" {CHOICE} " : [ 0x68 ] ,
" {ITEMSELECT} " : [ 0x69 ] ,
" {CHOICE2} " : [ 0x71 ] ,
" {CHOICE3} " : [ 0x72 ] ,
" {HARP} " : [ 0x79 , 0x2D ] ,
" {MENU} " : [ 0x6D , 0x00 ] ,
" {BOTTOM} " : [ 0x6D , 0x00 ] ,
" {NOBORDER} " : [ 0x6B , 0x02 ] ,
" {CHANGEPIC} " : [ 0x67 , 0x67 ] ,
" {CHANGEMUSIC} " : [ 0x67 ] ,
2019-04-27 16:52:19 +00:00
" {PAGEBREAK} " : [ 0x7D ] ,
2018-03-10 23:45:14 +00:00
" {INTRO} " : [ 0x6E , 0x00 , 0x77 , 0x07 , 0x7A , 0x03 , 0x6B , 0x02 , 0x67 ] ,
" {NOTEXT} " : [ 0x6E , 0x00 , 0x6B , 0x04 ] ,
" {IBOX} " : [ 0x6B , 0x02 , 0x77 , 0x07 , 0x7A , 0x03 ] ,
}
2017-11-19 01:43:37 +00:00
2018-03-10 23:45:14 +00:00
@classmethod
def convert ( cls , text , pause = True , wrap = 14 ) :
text = text . upper ( )
lines = text . split ( ' \n ' )
outbuf = bytearray ( )
lineindex = 0
is_intro = ' {INTRO} ' in text
2018-09-26 21:34:15 +00:00
first_line = True
2018-03-10 23:45:14 +00:00
while lines :
linespace = wrap
line = lines . pop ( 0 )
if line . startswith ( ' { ' ) :
2019-04-27 16:52:19 +00:00
if line == ' {PAGEBREAK} ' :
if lineindex % 3 != 0 :
# insert a wait for keypress, unless we just did so
outbuf . append ( 0x7E )
lineindex = 0
2018-03-10 23:45:14 +00:00
outbuf . extend ( cls . special_commands [ line ] )
continue
words = line . split ( ' ' )
2018-09-26 21:34:15 +00:00
if first_line :
first_line = False
else :
outbuf . append ( 0x74 if lineindex == 0 else 0x75 if lineindex == 1 else 0x76 ) # line starter
pending_space = False
2018-03-10 23:45:14 +00:00
while words :
word = words . pop ( 0 )
# sanity check: if the word we have is more than 14 characters, we take as much as we can still fit and push the rest back for later
if cls . wordlen ( word ) > wrap :
( word_first , word_rest ) = cls . splitword ( word , linespace )
words . insert ( 0 , word_rest )
lines . insert ( 0 , ' ' . join ( words ) )
outbuf . extend ( RawMBTextMapper . convert ( word_first ) )
break
2018-04-19 01:14:52 +00:00
if cls . wordlen ( word ) < = linespace :
2018-09-26 21:34:15 +00:00
if pending_space :
outbuf . extend ( RawMBTextMapper . convert ( ' ' ) )
2018-04-19 01:14:52 +00:00
if cls . wordlen ( word ) < linespace :
2018-09-26 21:34:15 +00:00
pending_space = True
linespace - = cls . wordlen ( word ) + 1 if pending_space else 0
2018-03-10 23:45:14 +00:00
outbuf . extend ( RawMBTextMapper . convert ( word ) )
else :
# ran out of space, push word and lines back and continue with next line
words . insert ( 0 , word )
lines . insert ( 0 , ' ' . join ( words ) )
break
if is_intro and lineindex < 3 :
outbuf . extend ( [ 0xFF ] * linespace )
has_more_lines = len ( lines ) > 1 or ( lines and not lines [ 0 ] . startswith ( ' { ' ) )
lineindex + = 1
if pause and lineindex % 3 == 0 and has_more_lines :
outbuf . append ( 0x7E )
2019-04-27 16:52:19 +00:00
if lineindex > = 3 and has_more_lines and lines [ 0 ] != ' {PAGEBREAK} ' :
2018-03-10 23:45:14 +00:00
outbuf . append ( 0x73 )
return outbuf
2017-05-20 12:07:19 +00:00
2018-03-10 23:45:14 +00:00
@classmethod
def wordlen ( cls , word ) :
l = 0
offset = 0
while offset < len ( word ) :
c_len , offset = cls . charlen ( word , offset )
l + = c_len
return l
2017-05-20 12:07:19 +00:00
2018-03-10 23:45:14 +00:00
@classmethod
def splitword ( cls , word , length ) :
l = 0
offset = 0
while True :
c_len , new_offset = cls . charlen ( word , offset )
if l + c_len > length :
2017-05-20 12:07:19 +00:00
break
2018-03-10 23:45:14 +00:00
l + = c_len
offset = new_offset
return ( word [ 0 : offset ] , word [ offset : ] )
2017-05-20 12:07:19 +00:00
2018-03-10 23:45:14 +00:00
@classmethod
def charlen ( cls , word , offset ) :
c = word [ offset ]
if c in [ ' > ' , ' ¼ ' , ' ½ ' , ' ♥ ' ] :
return ( 2 , offset + 1 )
if c in [ ' @ ' ] :
return ( 4 , offset + 1 )
if c in [ ' ᚋ ' , ' ᚌ ' , ' ᚍ ' , ' ᚎ ' ] :
return ( 2 , offset + 1 )
return ( 1 , offset + 1 )
class CompressedTextMapper ( object ) :
two_byte_commands = [
0x6B , 0x6C , 0x6D , 0x6E ,
0x77 , 0x78 , 0x79 , 0x7A
]
specially_coded_commands = {
0x73 : 0xF6 ,
0x74 : 0xF7 ,
0x75 : 0xF8 ,
0x76 : 0xF9 ,
0x7E : 0xFA ,
0x7A : 0xFC ,
}
2018-03-05 02:19:00 +00:00
2018-03-10 23:45:14 +00:00
@classmethod
def convert ( cls , text , pause = True , max_bytes_expanded = 0x800 , wrap = 14 ) :
inbuf = MultiByteCoreTextMapper . convert ( text , pause , wrap )
# Links name will need 8 bytes in the target buffer
# and two will be used by the terminator
# (Variables will use 2 bytes, but they start as 2 bytes)
bufsize = len ( inbuf ) + 7 * inbuf . count ( 0x6A ) + 2
if bufsize > max_bytes_expanded :
raise ValueError ( " Uncompressed string too long for buffer " )
inbuf . reverse ( )
outbuf = bytearray ( )
outbuf . append ( 0xfb ) # terminator for previous record
while inbuf :
val = inbuf . pop ( )
if val == 0xFF :
2018-03-05 02:19:00 +00:00
outbuf . append ( val )
2018-03-10 23:45:14 +00:00
elif val == 0x00 :
2018-03-05 02:19:00 +00:00
outbuf . append ( inbuf . pop ( ) )
2018-03-10 23:45:14 +00:00
elif val == 0x01 : #kanji
outbuf . append ( 0xFD )
outbuf . append ( inbuf . pop ( ) )
elif val > = 0x67 :
if val in cls . specially_coded_commands :
outbuf . append ( cls . specially_coded_commands [ val ] )
else :
outbuf . append ( 0xFE )
outbuf . append ( val )
if val in cls . two_byte_commands :
outbuf . append ( inbuf . pop ( ) )
else :
raise ValueError ( " Unexpected byte found in uncompressed string " )
return outbuf
2018-03-05 02:19:00 +00:00
2018-03-10 23:45:14 +00:00
class CharTextMapper ( object ) :
2017-11-05 04:06:00 +00:00
number_offset = None
2017-12-17 05:25:46 +00:00
alpha_offset = 0
char_map = { }
2017-11-05 04:06:00 +00:00
@classmethod
def map_char ( cls , char ) :
if cls . number_offset is not None :
if 0x30 < = ord ( char ) < = 0x39 :
return ord ( char ) + cls . number_offset
if 0x61 < = ord ( char ) < = 0x7A :
return ord ( char ) + cls . alpha_offset
return cls . char_map . get ( char , cls . char_map [ ' ' ] )
@classmethod
def convert ( cls , text ) :
buf = bytearray ( )
for char in text . lower ( ) :
buf . append ( cls . map_char ( char ) )
return buf
2018-03-10 23:45:14 +00:00
class RawMBTextMapper ( CharTextMapper ) :
2018-03-10 16:57:04 +00:00
char_map = { ' ' : 0xFF ,
2018-03-10 20:03:22 +00:00
' 『 ' : 0xC4 ,
' 』 ' : 0xC5 ,
2018-03-10 16:57:04 +00:00
' ? ' : 0xC6 ,
' ! ' : 0xC7 ,
' , ' : 0xC8 ,
' - ' : 0xC9 ,
2018-03-10 20:03:22 +00:00
" 🡄 " : 0xCA ,
" 🡆 " : 0xCB ,
2018-03-10 16:57:04 +00:00
' … ' : 0xCC ,
' . ' : 0xCD ,
' ~ ' : 0xCE ,
' ~ ' : 0xCE ,
' @ ' : [ 0x6A ] , # Links name (only works if compressed)
' > ' : [ 0x00 , 0xD2 , 0x00 , 0xD3 ] , # Link's face
" ' " : 0xD8 ,
' ’ ' : 0xD8 ,
' % ' : 0xDD , # Hylian Bird
' ^ ' : 0xDE , # Hylian Ankh
' = ' : 0xDF , # Hylian Wavy Lines
' ↑ ' : 0xE0 ,
' ↓ ' : 0xE1 ,
' → ' : 0xE2 ,
' ← ' : 0xE3 ,
' ≥ ' : 0xE4 , # Cursor
' ¼ ' : [ 0x00 , 0xE5 , 0x00 , 0xE7 ] , # ¼ heart
' ½ ' : [ 0x00 , 0xE6 , 0x00 , 0xE7 ] , # ½ heart
' ¾ ' : [ 0x00 , 0xE8 , 0x00 , 0xE9 ] , # ¾ heart
' ♥ ' : [ 0x00 , 0xEA , 0x00 , 0xEB ] , # full heart
' ᚋ ' : [ 0x6C , 0x00 ] , # var 0
' ᚌ ' : [ 0x6C , 0x01 ] , # var 1
' ᚍ ' : [ 0x6C , 0x02 ] , # var 2
' ᚎ ' : [ 0x6C , 0x03 ] , # var 3
' あ ' : 0x00 ,
' い ' : 0x01 ,
' う ' : 0x02 ,
' え ' : 0x03 ,
' お ' : 0x04 ,
' や ' : 0x05 ,
' ゆ ' : 0x06 ,
' よ ' : 0x07 ,
' か ' : 0x08 ,
' き ' : 0x09 ,
' く ' : 0x0A ,
' け ' : 0x0B ,
' こ ' : 0x0C ,
' わ ' : 0x0D ,
' を ' : 0x0E ,
' ん ' : 0x0F ,
' さ ' : 0x10 ,
' し ' : 0x11 ,
' す ' : 0x12 ,
' せ ' : 0x13 ,
' そ ' : 0x14 ,
' が ' : 0x15 ,
' ぎ ' : 0x16 ,
' ぐ ' : 0x17 ,
' た ' : 0x18 ,
' ち ' : 0x19 ,
' つ ' : 0x1A ,
' て ' : 0x1B ,
' と ' : 0x1C ,
' げ ' : 0x1D ,
' ご ' : 0x1E ,
' ざ ' : 0x1F ,
' な ' : 0x20 ,
' に ' : 0x21 ,
' ぬ ' : 0x22 ,
' ね ' : 0x23 ,
' の ' : 0x24 ,
' じ ' : 0x25 ,
' ず ' : 0x26 ,
' ぜ ' : 0x27 ,
' は ' : 0x28 ,
' ひ ' : 0x29 ,
' ふ ' : 0x2A ,
' へ ' : 0x2B ,
' ほ ' : 0x2C ,
' ぞ ' : 0x2D ,
' だ ' : 0x2E ,
' ぢ ' : 0x2F ,
' ま ' : 0x30 ,
' み ' : 0x31 ,
' む ' : 0x32 ,
' め ' : 0x33 ,
' も ' : 0x34 ,
' づ ' : 0x35 ,
' で ' : 0x36 ,
' ど ' : 0x37 ,
' ら ' : 0x38 ,
' り ' : 0x39 ,
' る ' : 0x3A ,
' れ ' : 0x3B ,
' ろ ' : 0x3C ,
' ば ' : 0x3D ,
' び ' : 0x3E ,
' ぶ ' : 0x3F ,
' べ ' : 0x40 ,
' ぼ ' : 0x41 ,
' ぱ ' : 0x42 ,
' ぴ ' : 0x43 ,
' ぷ ' : 0x44 ,
' ぺ ' : 0x45 ,
' ぽ ' : 0x46 ,
' ゃ ' : 0x47 ,
' ゅ ' : 0x48 ,
' ょ ' : 0x49 ,
' っ ' : 0x4A ,
' ぁ ' : 0x4B ,
' ぃ ' : 0x4C ,
' ぅ ' : 0x4D ,
' ぇ ' : 0x4E ,
' ぉ ' : 0x4F ,
' ア ' : 0x50 ,
' イ ' : 0x51 ,
' ウ ' : 0x52 ,
' エ ' : 0x53 ,
' オ ' : 0x54 ,
' ヤ ' : 0x55 ,
' ユ ' : 0x56 ,
' ヨ ' : 0x57 ,
' カ ' : 0x58 ,
' キ ' : 0x59 ,
' ク ' : 0x5A ,
' ケ ' : 0x5B ,
' コ ' : 0x5C ,
' ワ ' : 0x5D ,
' ヲ ' : 0x5E ,
' ン ' : 0x5F ,
' サ ' : 0x60 ,
' シ ' : 0x61 ,
' ス ' : 0x62 ,
' セ ' : 0x63 ,
' ソ ' : 0x64 ,
' ガ ' : 0x65 ,
' ギ ' : 0x66 ,
' グ ' : 0x67 ,
' タ ' : 0x68 ,
' チ ' : 0x69 ,
' ツ ' : 0x6A ,
' テ ' : 0x6B ,
' ト ' : 0x6C ,
' ゲ ' : 0x6D ,
' ゴ ' : 0x6E ,
' ザ ' : 0x6F ,
' ナ ' : 0x70 ,
' ニ ' : 0x71 ,
' ヌ ' : 0x72 ,
' ネ ' : 0x73 ,
' ノ ' : 0x74 ,
' ジ ' : 0x75 ,
' ズ ' : 0x76 ,
' ゼ ' : 0x77 ,
' ハ ' : 0x78 ,
' ヒ ' : 0x79 ,
' フ ' : 0x7A ,
' ヘ ' : 0x7B ,
' ホ ' : 0x7C ,
' ゾ ' : 0x7D ,
' ダ ' : 0x7E ,
' マ ' : 0x80 ,
' ミ ' : 0x81 ,
' ム ' : 0x82 ,
' メ ' : 0x83 ,
' モ ' : 0x84 ,
' ヅ ' : 0x85 ,
' デ ' : 0x86 ,
' ド ' : 0x87 ,
' ラ ' : 0x88 ,
' リ ' : 0x89 ,
' ル ' : 0x8A ,
' レ ' : 0x8B ,
' ロ ' : 0x8C ,
' バ ' : 0x8D ,
' ビ ' : 0x8E ,
' ブ ' : 0x8F ,
' ベ ' : 0x90 ,
' ボ ' : 0x91 ,
' パ ' : 0x92 ,
' ピ ' : 0x93 ,
' プ ' : 0x94 ,
' ペ ' : 0x95 ,
' ポ ' : 0x96 ,
' ャ ' : 0x97 ,
' ュ ' : 0x98 ,
' ョ ' : 0x99 ,
' ッ ' : 0x9A ,
' ァ ' : 0x9B ,
' ィ ' : 0x9C ,
' ゥ ' : 0x9D ,
' ェ ' : 0x9E ,
' ォ ' : 0x9F }
2018-03-10 18:20:06 +00:00
kanji = { " 娘 " : 0x00 ,
" 城 " : 0x01 ,
" 行 " : 0x02 ,
" 教 " : 0x03 ,
" 会 " : 0x04 ,
" 神 " : 0x05 ,
" 父 " : 0x06 ,
" 訪 " : 0x07 ,
" 頼 " : 0x08 ,
" 通 " : 0x09 ,
" 願 " : 0x0A ,
" 平 " : 0x0B ,
" 和 " : 0x0C ,
" 司 " : 0x0D ,
" 書 " : 0x0E ,
" 戻 " : 0x0F ,
" 様 " : 0x10 ,
" 子 " : 0x11 ,
" 湖 " : 0x12 ,
" 達 " : 0x13 ,
" 彼 " : 0x14 ,
" 女 " : 0x15 ,
" 言 " : 0x16 ,
" 祭 " : 0x17 ,
" 早 " : 0x18 ,
" 雨 " : 0x19 ,
" 剣 " : 0x1A ,
" 盾 " : 0x1B ,
" 解 " : 0x1C ,
" 抜 " : 0x1D ,
" 者 " : 0x1E ,
" 味 " : 0x1F ,
" 方 " : 0x20 ,
" 無 " : 0x21 ,
" 事 " : 0x22 ,
" 出 " : 0x23 ,
" 本 " : 0x24 ,
" 当 " : 0x25 ,
" 私 " : 0x26 ,
" 他 " : 0x27 ,
" 救 " : 0x28 ,
" 倒 " : 0x29 ,
" 度 " : 0x2A ,
" 国 " : 0x2B ,
" 退 " : 0x2C ,
" 魔 " : 0x2D ,
" 伝 " : 0x2E ,
" 説 " : 0x2F ,
" 必 " : 0x30 ,
" 要 " : 0x31 ,
" 良 " : 0x32 ,
" 地 " : 0x33 ,
" 図 " : 0x34 ,
" 印 " : 0x35 ,
" 思 " : 0x36 ,
" 気 " : 0x37 ,
" 人 " : 0x38 ,
" 間 " : 0x39 ,
" 兵 " : 0x3A ,
" 病 " : 0x3B ,
" 法 " : 0x3C ,
" 屋 " : 0x3D ,
" 手 " : 0x3E ,
" 住 " : 0x3F ,
" 連 " : 0x40 ,
" 恵 " : 0x41 ,
" 表 " : 0x42 ,
" 金 " : 0x43 ,
" 王 " : 0x44 ,
" 信 " : 0x45 ,
" 裏 " : 0x46 ,
" 取 " : 0x47 ,
" 引 " : 0x48 ,
" 入 " : 0x49 ,
" 口 " : 0x4A ,
" 開 " : 0x4B ,
" 見 " : 0x4C ,
" 正 " : 0x4D ,
" 幸 " : 0x4E ,
" 運 " : 0x4F ,
" 呼 " : 0x50 ,
" 物 " : 0x51 ,
" 付 " : 0x52 ,
" 紋 " : 0x53 ,
" 章 " : 0x54 ,
" 所 " : 0x55 ,
" 家 " : 0x56 ,
" 闇 " : 0x57 ,
" 読 " : 0x58 ,
" 左 " : 0x59 ,
" 側 " : 0x5A ,
" 札 " : 0x5B ,
" 穴 " : 0x5C ,
" 道 " : 0x5D ,
" 男 " : 0x5E ,
" 大 " : 0x5F ,
" 声 " : 0x60 ,
" 下 " : 0x61 ,
" 犯 " : 0x62 ,
" 花 " : 0x63 ,
" 深 " : 0x64 ,
" 森 " : 0x65 ,
" 水 " : 0x66 ,
" 若 " : 0x67 ,
" 美 " : 0x68 ,
" 探 " : 0x69 ,
" 今 " : 0x6A ,
" 士 " : 0x6B ,
" 店 " : 0x6C ,
" 好 " : 0x6D ,
" 代 " : 0x6E ,
" 名 " : 0x6F ,
" 迷 " : 0x70 ,
" 立 " : 0x71 ,
" 上 " : 0x72 ,
" 光 " : 0x73 ,
" 点 " : 0x74 ,
" 目 " : 0x75 ,
" 的 " : 0x76 ,
" 押 " : 0x77 ,
" 前 " : 0x78 ,
" 夜 " : 0x79 ,
" 十 " : 0x7A ,
" 字 " : 0x7B ,
" 北 " : 0x7C ,
" 急 " : 0x7D ,
" 昔 " : 0x7E ,
" 果 " : 0x7F ,
" 奥 " : 0x80 ,
" 選 " : 0x81 ,
" 続 " : 0x82 ,
" 結 " : 0x83 ,
" 定 " : 0x84 ,
" 悪 " : 0x85 ,
" 向 " : 0x86 ,
" 歩 " : 0x87 ,
" 時 " : 0x88 ,
" 使 " : 0x89 ,
" 古 " : 0x8A ,
" 何 " : 0x8B ,
" 村 " : 0x8C ,
" 長 " : 0x8D ,
" 配 " : 0x8E ,
" 匹 " : 0x8F ,
" 殿 " : 0x90 ,
" 守 " : 0x91 ,
" 精 " : 0x92 ,
" 知 " : 0x93 ,
" 山 " : 0x94 ,
" 誰 " : 0x95 ,
" 足 " : 0x96 ,
" 冷 " : 0x97 ,
" 黄 " : 0x98 ,
" 力 " : 0x99 ,
" 宝 " : 0x9A ,
" 求 " : 0x9B ,
" 先 " : 0x9C ,
" 消 " : 0x9D ,
" 封 " : 0x9E ,
" 捕 " : 0x9F ,
" 勇 " : 0xA0 ,
" 年 " : 0xA1 ,
" 姿 " : 0xA2 ,
" 話 " : 0xA3 ,
" 色 " : 0xA4 ,
" 々 " : 0xA5 ,
" 真 " : 0xA6 ,
" 紅 " : 0xA7 ,
" 場 " : 0xA8 ,
" 炎 " : 0xA9 ,
" 空 " : 0xAA ,
" 面 " : 0xAB ,
" 音 " : 0xAC ,
" 吹 " : 0xAD ,
" 中 " : 0xAE ,
" 祈 " : 0xAF ,
" 起 " : 0xB0 ,
" 右 " : 0xB1 ,
" 念 " : 0xB2 ,
" 再 " : 0xB3 ,
" 生 " : 0xB4 ,
" 庭 " : 0xB5 ,
" 路 " : 0xB6 ,
" 部 " : 0xB7 ,
" 川 " : 0xB8 ,
" 血 " : 0xB9 ,
" 完 " : 0xBA ,
" 矢 " : 0xBB ,
" 現 " : 0xBC ,
" 在 " : 0xBD ,
" 全 " : 0xBE ,
" 体 " : 0xBF ,
" 文 " : 0xC0 ,
" 秘 " : 0xC1 ,
" 密 " : 0xC2 ,
" 感 " : 0xC3 ,
" 賢 " : 0xC4 ,
" 陣 " : 0xC5 ,
" 残 " : 0xC6 ,
" 百 " : 0xC7 ,
" 近 " : 0xC8 ,
" 朝 " : 0xC9 ,
" 助 " : 0xCA ,
" 術 " : 0xCB ,
" 粉 " : 0xCC ,
" 火 " : 0xCD ,
" 注 " : 0xCE ,
" 意 " : 0xCF ,
" 走 " : 0xD0 ,
" 敵 " : 0xD1 ,
" 玉 " : 0xD2 ,
" 復 " : 0xD3 ,
" 活 " : 0xD4 ,
" 塔 " : 0xD5 ,
" 来 " : 0xD6 ,
" 帰 " : 0xD7 ,
" 忘 " : 0xD8 ,
" 東 " : 0xD9 ,
" 青 " : 0xDA ,
" 持 " : 0xDB ,
" 込 " : 0xDC ,
" 逃 " : 0xDD ,
" 銀 " : 0xDE ,
" 勝 " : 0xDF ,
" 集 " : 0xE0 ,
" 始 " : 0xE1 ,
" 攻 " : 0xE2 ,
" 撃 " : 0xE3 ,
" 命 " : 0xE4 ,
" 老 " : 0xE5 ,
" 心 " : 0xE6 ,
" 新 " : 0xE7 ,
" 世 " : 0xE8 ,
" 界 " : 0xE9 ,
" 箱 " : 0xEA ,
" 木 " : 0xEB ,
" 対 " : 0xEC ,
" 特 " : 0xED ,
" 賊 " : 0xEE ,
" 洞 " : 0xEF ,
" 支 " : 0xF0 ,
" 盗 " : 0xF1 ,
" 族 " : 0xF2 ,
" 能 " : 0xF3 ,
#"力": 0xF4,
" 多 " : 0xF5 ,
" 聖 " : 0xF6 ,
" 両 " : 0xF7 ,
" 民 " : 0xF8 ,
" 予 " : 0xF9 ,
" 小 " : 0xFA ,
" 強 " : 0xFB ,
" 投 " : 0xFC ,
" 服 " : 0xFD ,
" 月 " : 0xFE ,
" 姫 " : 0xFF }
2018-03-23 05:28:01 +00:00
alpha_offset = 0x49
2018-03-10 16:57:04 +00:00
number_offset = 0x70
2018-03-10 18:20:06 +00:00
@classmethod
def map_char ( cls , char ) :
if char in cls . kanji :
return [ 0x01 , cls . kanji [ char ] ]
return super ( ) . map_char ( char )
2018-03-10 16:57:04 +00:00
@classmethod
def convert ( cls , text ) :
buf = bytearray ( )
for char in text . lower ( ) :
res = cls . map_char ( char )
if isinstance ( res , int ) :
buf . extend ( [ 0x00 , res ] )
else :
buf . extend ( res )
return buf
2017-11-05 04:06:00 +00:00
2018-03-10 23:45:14 +00:00
class GoldCreditMapper ( CharTextMapper ) :
2017-11-05 04:06:00 +00:00
char_map = { ' ' : 0x9F ,
' , ' : 0x34 ,
2018-03-10 20:03:22 +00:00
" ' " : 0x35 ,
2017-11-05 04:06:00 +00:00
' - ' : 0x36 ,
2018-03-10 20:03:22 +00:00
' . ' : 0x37 , }
2017-11-05 04:06:00 +00:00
alpha_offset = - 0x47
2018-03-10 23:45:14 +00:00
class GreenCreditMapper ( CharTextMapper ) :
2017-11-05 04:06:00 +00:00
char_map = { ' ' : 0x9F ,
2018-03-10 20:03:22 +00:00
' · ' : 0x52 }
2017-11-05 04:06:00 +00:00
alpha_offset = - 0x29
2017-11-19 01:43:37 +00:00
2018-03-10 23:45:14 +00:00
class RedCreditMapper ( CharTextMapper ) :
2018-03-10 20:03:22 +00:00
char_map = { ' ' : 0x9F }
2017-12-17 05:25:46 +00:00
alpha_offset = - 0x61
2017-11-05 04:06:00 +00:00
2018-03-10 23:45:14 +00:00
class LargeCreditTopMapper ( CharTextMapper ) :
2017-11-05 04:06:00 +00:00
char_map = { ' ' : 0x9F ,
" ' " : 0x77 ,
' ! ' : 0x78 ,
' . ' : 0xA0 ,
' # ' : 0xA1 ,
' / ' : 0xA2 ,
2018-03-10 20:03:22 +00:00
' : ' : 0xA3 ,
' , ' : 0xA4 ,
' ? ' : 0xA5 ,
' = ' : 0xA6 ,
' " ' : 0xA7 ,
' - ' : 0xA8 ,
' · ' : 0xA9 ,
' • ' : 0xA9 ,
' ◢ ' : 0xAA ,
' ◣ ' : 0xAB , }
2017-11-05 04:06:00 +00:00
alpha_offset = - 0x04
number_offset = 0x23
2017-05-25 13:58:35 +00:00
2018-03-10 23:45:14 +00:00
class LargeCreditBottomMapper ( CharTextMapper ) :
2017-11-05 04:06:00 +00:00
char_map = { ' ' : 0x9F ,
" ' " : 0x9D ,
' ! ' : 0x9E ,
' . ' : 0xC0 ,
' # ' : 0xC1 ,
' / ' : 0xC2 ,
2018-03-10 20:03:22 +00:00
' : ' : 0xC3 ,
' , ' : 0xC4 ,
' ? ' : 0xC5 ,
' = ' : 0xC6 ,
' " ' : 0xC7 ,
' - ' : 0xC8 ,
' · ' : 0xC9 ,
' • ' : 0xC9 ,
' ◢ ' : 0xCA ,
' ◣ ' : 0xCB , }
2017-11-05 04:06:00 +00:00
alpha_offset = 0x22
number_offset = 0x49
2018-04-19 01:17:40 +00:00
class TextTable ( object ) :
SIZE = 0x7355
def __init__ ( self ) :
self . _text = OrderedDict ( )
self . setDefaultText ( )
def __getitem__ ( self , key ) :
return self . _text [ key ]
def __setitem__ ( self , key , value ) :
if not key in self . _text :
raise KeyError ( key )
if isinstance ( value , str ) :
self . _text [ key ] = CompressedTextMapper . convert ( value )
else :
2018-08-04 20:29:07 +00:00
self . _text [ key ] = value
2018-04-19 01:17:40 +00:00
2018-08-04 20:29:07 +00:00
def getBytes ( self , pad = False ) :
2018-04-19 01:17:40 +00:00
logger = logging . getLogger ( ' ' )
data = b ' ' . join ( self . _text . values ( ) )
logger . debug ( " translation space remaining: %i " , self . SIZE - len ( data ) )
if len ( data ) > self . SIZE :
raise Exception ( " Text data is too large to fit " )
2018-08-04 20:29:07 +00:00
if pad :
2018-07-15 01:11:31 +00:00
return data . ljust ( self . SIZE , b ' \xff ' )
2018-08-04 20:29:07 +00:00
return data
2018-04-19 01:17:40 +00:00
def removeUnwantedText ( self ) :
nomessage = bytes ( CompressedTextMapper . convert ( " {NOTEXT} " , False ) )
messages_to_zero = [
#escort Messages
' zelda_go_to_throne ' ,
' zelda_push_throne ' ,
' zelda_switch_room_pull ' ,
' zelda_switch_room ' ,
' zelda_sewers ' ,
' mountain_old_man_first ' ,
' mountain_old_man_deadend ' ,
' mountain_old_man_turn_right ' ,
' blind_not_that_way ' ,
# Note: Maiden text gets skipped by a change we will keep, so technically we don't need to replace them
# Replacing them anyway to make more room in translation table
' maiden_crystal_1 ' ,
' maiden_crystal_2 ' ,
' maiden_crystal_3 ' ,
' maiden_crystal_4 ' ,
' maiden_crystal_5 ' ,
' maiden_crystal_6 ' ,
' maiden_crystal_7 ' ,
' maiden_ending ' ,
' maiden_confirm_undersood ' ,
' maiden_crystal_7_again ' ,
2018-07-15 20:24:58 +00:00
# item pickup text
2018-04-19 01:17:40 +00:00
' item_get_lamp ' ,
' item_get_boomerang ' ,
' item_get_bow ' ,
' item_get_shovel ' ,
' item_get_magic_cape ' ,
' item_get_powder ' ,
' item_get_flippers ' ,
' item_get_power_gloves ' ,
' item_get_pendant_courage ' ,
' item_get_pendant_power ' ,
' item_get_pendant_wisdom ' ,
' item_get_mushroom ' ,
' item_get_book ' ,
' item_get_moonpearl ' ,
' item_get_compass ' ,
' item_get_map ' , #60
' item_get_ice_rod ' ,
' item_get_fire_rod ' ,
' item_get_ether ' ,
' item_get_bombos ' ,
' item_get_quake ' ,
' item_get_hammer ' ,
' item_get_ocarina ' ,
' item_get_cane_of_somaria ' ,
' item_get_hookshot ' ,
' item_get_bombs ' ,
' item_get_bottle ' ,
' item_get_big_key ' ,
' item_get_titans_mitts ' ,
' item_get_magic_mirror ' ,
' item_get_fake_mastersword ' ,
' post_item_get_mastersword ' ,
' item_get_red_potion ' ,
' item_get_green_potion ' ,
' item_get_blue_potion ' ,
' item_get_bug_net ' ,
' item_get_blue_mail ' ,
' item_get_red_mail ' ,
' item_get_temperedsword ' ,
' item_get_mirror_shield ' ,
' item_get_cane_of_byrna ' ,
' item_get_pegasus_boots ' ,
' item_get_pendant_wisdom_alt ' ,
' item_get_pendant_power_alt ' ,
' pond_item_boomerang ' ,
' blacksmiths_tempered_already ' , #!! For some reason this is coded as a recive message
' item_get_whole_heart ' ,
' item_get_sanc_heart ' ,
' item_get_14_heart ' ,
' item_get_24_heart ' ,
' item_get_34_heart ' ,
2018-09-23 02:51:54 +00:00
' pond_item_test ' ,
' pond_will_upgrade ' ,
2018-04-19 01:17:40 +00:00
# misc
' agahnim_final_meeting ' ,
' agahnim_hide_and_seek_found ' ,
' telepathic_sahasrahla_beat_agahnim ' ,
' telepathic_sahasrahla_beat_agahnim_no_pearl ' ,
' magic_bat_wake ' ,
' magic_bat_give_half_magic ' ,
' mountain_old_man_in_his_cave_pre_agahnim ' ,
' mountain_old_man_in_his_cave ' ,
' mountain_old_man_in_his_cave_post_agahnim ' ,
' priest_sanctuary_before_leave ' ,
' priest_sanctuary_before_pendants ' ,
' priest_sanctuary_after_pendants_before_master_sword ' ,
' zelda_sanctuary_before_leave ' ,
' zelda_before_pendants ' ,
' zelda_after_pendants_before_master_sword ' ,
' zelda_save_sewers ' ,
' zelda_save_lets_go ' ,
' zelda_save_repeat ' ,
' priest_info ' ,
' sanctuary_enter ' ,
' zelda_sanctuary_story ' ,
' sick_kid_trade ' ,
' hobo_item_get_bottle ' ,
' sahasrahla_have_courage ' ,
' sahasrahla_found ' ,
' sahasrahla_have_boots_no_icerod ' ,
' sahasrahla_bring_courage ' ,
2018-07-24 23:22:47 +00:00
' sahasrahla_quest_have_master_sword ' ,
2018-04-19 01:17:40 +00:00
' shop_darkworld_enter ' ,
' shop_first_time ' ,
' shop_buy_shield ' ,
' shop_buy_red_potion ' ,
' shop_buy_arrows ' ,
' shop_buy_bombs ' ,
' shop_buy_bee ' ,
' shop_buy_heart ' ,
' bomb_shop_big_bomb_buy ' ,
' item_get_big_bomb ' ,
2018-07-15 00:46:42 +00:00
' catfish ' ,
' catfish_after_item ' ,
2018-04-19 01:17:40 +00:00
' zora_meeting ' ,
' zora_tells_cost ' ,
' zora_get_flippers ' ,
#'zora_no_cash',
' zora_no_buy_item ' ,
' agahnim_zelda_teleport ' ,
' agahnim_magic_running_away ' ,
' blind_in_the_cell ' ,
' kiki_first_extortion ' ,
' kiki_first_extortion_yes ' ,
' kiki_second_extortion ' ,
' kiki_second_extortion_yes ' ,
' witch_brewing_the_item ' ,
' barrier_breaking ' ,
' mountain_old_man_lost_and_alone ' ,
' mountain_old_man_drop_off ' ,
' pickup_purple_chest ' ,
' agahnim_defeated ' ,
' blacksmiths_collect_frog ' ,
' blacksmiths_what_you_want ' ,
' blacksmiths_get_sword ' ,
' blacksmiths_shop_saving ' ,
' blacksmiths_paywall ' ,
' blacksmiths_extra_okay ' ,
' blacksmiths_bogart_sword ' ,
' blacksmiths_tempered_already ' ,
' missing_magic ' ,
' witch_assistant_no_empty_bottle ' ,
' witch_assistant_informational ' ,
' bottle_vendor_choice ' ,
' bottle_vendor_get ' ,
' game_digging_choice ' ,
' game_digging_start ' ,
' dark_flute_boy_storytime ' ,
' dark_flute_boy_get_shovel ' ,
2018-08-04 20:29:07 +00:00
' thief_money ' ,
2018-04-19 01:17:40 +00:00
' game_chest_village_of_outcasts ' ,
' game_chest_village_of_outcasts_play ' ,
' hylian_text_2 ' ,
' desert_entry_translated ' ,
' uncle_dying_sewer ' ,
2018-08-05 18:59:39 +00:00
' telepathic_intro ' ,
' desert_thief_sitting ' ,
' desert_thief_following ' ,
' desert_thief_question ' ,
' desert_thief_question_yes ' ,
' desert_thief_after_item_get ' ,
' desert_thief_reassure ' ,
2018-04-19 01:17:40 +00:00
]
for msg in messages_to_zero :
self [ msg ] = nomessage
def setDefaultText ( self ) :
text = self . _text
text [ ' set_cursor ' ] = bytearray ( [ 0xFB , 0xFC , 0x00 , 0xF9 , 0xFF , 0xFF , 0xFF , 0xF8 , 0xFF , 0xFF , 0xE4 , 0xFE , 0x68 ] )
text [ ' set_cursor2 ' ] = bytearray ( [ 0xFB , 0xFC , 0x00 , 0xF8 , 0xFF , 0xFF , 0xFF , 0xF9 , 0xFF , 0xFF , 0xE4 , 0xFE , 0x68 ] )
text [ ' game_over_menu ' ] = CompressedTextMapper . convert ( " {SPEED0} \n Save-Continue \n Save-Quit \n Continue " , False )
text [ ' var_test ' ] = CompressedTextMapper . convert ( " 0= ᚋ, 1= ᚌ \n 2= ᚍ, 3= ᚎ " , False )
text [ ' follower_no_enter ' ] = CompressedTextMapper . convert ( " Can ' t you take me some place nice. " )
text [ ' choice_1_3 ' ] = bytearray ( [ 0xFB , 0xFC , 0x00 , 0xF7 , 0xE4 , 0xF8 , 0xFF , 0xF9 , 0xFF , 0xFE , 0x71 ] )
text [ ' choice_2_3 ' ] = bytearray ( [ 0xFB , 0xFC , 0x00 , 0xF7 , 0xFF , 0xF8 , 0xE4 , 0xF9 , 0xFF , 0xFE , 0x71 ] )
text [ ' choice_3_3 ' ] = bytearray ( [ 0xFB , 0xFC , 0x00 , 0xF7 , 0xFF , 0xF8 , 0xFF , 0xF9 , 0xE4 , 0xFE , 0x71 ] )
text [ ' choice_1_2 ' ] = bytearray ( [ 0xFB , 0xFC , 0x00 , 0xF7 , 0xE4 , 0xF8 , 0xFF , 0xFE , 0x72 ] )
text [ ' choice_2_2 ' ] = bytearray ( [ 0xFB , 0xFC , 0x00 , 0xF7 , 0xFF , 0xF8 , 0xE4 , 0xFE , 0x72 ] )
text [ ' uncle_leaving_text ' ] = CompressedTextMapper . convert ( " I ' m just going out for a pack of smokes. " )
text [ ' uncle_dying_sewer ' ] = CompressedTextMapper . convert ( " I ' ve fallen and I can ' t get up, take this. " )
text [ ' tutorial_guard_1 ' ] = CompressedTextMapper . convert ( " Only adults should travel at night. " )
# 10
2018-08-04 20:29:07 +00:00
text [ ' tutorial_guard_2 ' ] = CompressedTextMapper . convert ( " You can press X to see the Map. " )
2018-04-19 01:17:40 +00:00
text [ ' tutorial_guard_3 ' ] = CompressedTextMapper . convert ( " Press the A button to lift things by you. " )
text [ ' tutorial_guard_4 ' ] = CompressedTextMapper . convert ( " When you has a sword, press B to slash it. " )
text [ ' tutorial_guard_5 ' ] = CompressedTextMapper . convert ( " このメッセージはニホンゴでそのまま " ) # on purpose
text [ ' tutorial_guard_6 ' ] = CompressedTextMapper . convert ( " Are we really still reading these? " )
text [ ' tutorial_guard_7 ' ] = CompressedTextMapper . convert ( " Jeeze! There really are a lot of things. " )
text [ ' priest_sanctuary_before_leave ' ] = CompressedTextMapper . convert ( " Go be a hero! " )
2018-08-04 20:29:07 +00:00
text [ ' sanctuary_enter ' ] = CompressedTextMapper . convert ( " YAY! \n You saved Zelda! " )
2018-04-19 01:17:40 +00:00
text [ ' zelda_sanctuary_story ' ] = CompressedTextMapper . convert ( " Do you want to hear me say this again? \n {HARP} \n ≥ no \n yes \n {CHOICE} " )
2018-08-04 20:29:07 +00:00
text [ ' priest_sanctuary_before_pendants ' ] = CompressedTextMapper . convert ( " Go ' on and get them pendants so you can beat up Agahnim. " )
text [ ' priest_sanctuary_after_pendants_before_master_sword ' ] = CompressedTextMapper . convert ( " Kudos! But seriously, you should be getting the master sword, not having a kegger in here. " )
text [ ' priest_sanctuary_dying ' ] = CompressedTextMapper . convert ( " They took her to the castle! Take your sword and save her! " )
2018-04-19 01:17:40 +00:00
text [ ' zelda_save_sewers ' ] = CompressedTextMapper . convert ( " You saved me! " )
text [ ' priest_info ' ] = CompressedTextMapper . convert ( " So, I ' m the dude that will protect Zelda. Don ' t worry, I got this covered. " )
text [ ' zelda_sanctuary_before_leave ' ] = CompressedTextMapper . convert ( " Be careful! " )
text [ ' telepathic_intro ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n {SPEED6} \n Hey, come find me and help me! " )
# 20
text [ ' telepathic_reminder ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n {SPEED6} \n I ' m in the castle basement. " )
text [ ' zelda_go_to_throne ' ] = CompressedTextMapper . convert ( " Go north to the throne. " )
text [ ' zelda_push_throne ' ] = CompressedTextMapper . convert ( " Let ' s push it from the left! " )
text [ ' zelda_switch_room_pull ' ] = CompressedTextMapper . convert ( " Pull this lever using A. " )
text [ ' zelda_save_lets_go ' ] = CompressedTextMapper . convert ( " Let ' s get out of here! " )
text [ ' zelda_save_repeat ' ] = CompressedTextMapper . convert ( " I like talking, do you? \n ≥ no \n yes \n {CHOICE} " )
2018-08-04 20:29:07 +00:00
text [ ' zelda_before_pendants ' ] = CompressedTextMapper . convert ( " You need to find all the pendants… \n \n \n Numpty. " )
2018-04-19 01:17:40 +00:00
text [ ' zelda_after_pendants_before_master_sword ' ] = CompressedTextMapper . convert ( " Very pretty pendants, but really you should be getting that sword in the forest! " )
text [ ' telepathic_zelda_right_after_master_sword ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n {SPEED6} \n Hi @, \n Have you been thinking about me? \n arrrrrgghh… \n … … … " )
text [ ' zelda_sewers ' ] = CompressedTextMapper . convert ( " Just a little further to the Sanctuary. " )
2018-08-04 20:29:07 +00:00
text [ ' zelda_switch_room ' ] = CompressedTextMapper . convert ( " The Sanctuary! \n \n Pull my finger " )
2018-04-19 01:17:40 +00:00
text [ ' kakariko_saharalasa_wife ' ] = CompressedTextMapper . convert ( " Heya, @! \n Long time no see. \n You want a master sword? \n \n Well good luck with that. " )
2018-08-04 20:29:07 +00:00
text [ ' kakariko_saharalasa_wife_sword_story ' ] = CompressedTextMapper . convert ( " It occurs to me that I like toast and jam, but cheese and crackers is better. \n You like? \n ≥ cheese \n jam \n {CHOICE} " )
text [ ' kakariko_saharalasa_wife_closing ' ] = CompressedTextMapper . convert ( " Anywho, I have things to do. You see those 2 ovens? \n \n Yeah 2! \n Who has 2 ovens nowadays? " )
2018-04-19 01:17:40 +00:00
text [ ' kakariko_saharalasa_after_master_sword ' ] = CompressedTextMapper . convert ( " Cool sword! \n \n \n … \n \n \n … \n \n \n Please save us " )
2018-08-04 20:29:07 +00:00
text [ ' kakariko_alert_guards ' ] = CompressedTextMapper . convert ( " GUARDS! HELP! \n The creeper \n @ is here! " )
2018-04-19 01:17:40 +00:00
# 30
2018-08-04 20:29:07 +00:00
text [ ' sahasrahla_quest_have_pendants ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Cool beans, but I think you should mosey on over to the lost woods. " )
text [ ' sahasrahla_quest_have_master_sword ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n That ' s a pretty sword, but I ' m old, forgetful, and old. Why don ' t you go do all the hard work while I hang out in this hut. " )
2018-04-19 01:17:40 +00:00
text [ ' sahasrahla_quest_information ' ] = CompressedTextMapper . convert (
" {BOTTOM} \n "
2018-08-04 20:29:07 +00:00
+ " Sahasrahla, I am. You would do well to find the 3 pendants from the 3 dungeons in the Light World. \n "
2018-04-19 01:17:40 +00:00
+ " Understand? \n ≥ yes \n no \n {CHOICE} " )
text [ ' sahasrahla_bring_courage ' ] = CompressedTextMapper . convert (
" {BOTTOM} \n "
+ " While you ' re here, could you do me a solid and get the green pendant from that dungeon? \n "
+ " {HARP} \n I ' ll give you a present if you do. " )
2018-08-04 20:29:07 +00:00
text [ ' sahasrahla_have_ice_rod ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Like, I sit here, and tell you what to do? \n \n \n Alright, go and find all the maidens, there are, like, maybe 7 of them. I dunno anymore. I ' m old. " )
text [ ' telepathic_sahasrahla_beat_agahnim ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n {SPEED6} \n Nice, so you beat Agahnim. Now you must beat Ganon. Good Luck! " )
text [ ' telepathic_sahasrahla_beat_agahnim_no_pearl ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n {SPEED6} \n Oh, also you forgot the Moon Pearl, dingus. Go back and find it! " )
text [ ' sahasrahla_have_boots_no_icerod ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Cave in South East has a cool item. " )
text [ ' sahasrahla_have_courage ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Look, you have the green pendant! I ' ll give you something. Go kill the other two bosses for more pendant fun! " )
text [ ' sahasrahla_found ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Yup! \n \n I ' m the old man you are looking for. I ' ll keep it short and sweet: Go into that dungeon, then bring me the green pendant and talk to me again. " )
text [ ' sign_rain_north_of_links_house ' ] = CompressedTextMapper . convert ( " ↑ Dying Uncle \n This way… " )
2018-09-23 02:51:54 +00:00
text [ ' sign_north_of_links_house ' ] = CompressedTextMapper . convert ( " > Randomizer " ) #"> Randomizer The telepathic tiles can have hints!"
2018-08-04 20:29:07 +00:00
text [ ' sign_path_to_death_mountain ' ] = CompressedTextMapper . convert ( " Cave to lost, old man. \n Good luck. " )
2018-04-19 01:17:40 +00:00
text [ ' sign_lost_woods ' ] = CompressedTextMapper . convert ( " \n ↑ Lost Woods " )
2018-08-04 20:29:07 +00:00
text [ ' sign_zoras ' ] = CompressedTextMapper . convert ( " Danger! \n Deep water! \n Zoras! " )
text [ ' sign_outside_magic_shop ' ] = CompressedTextMapper . convert ( " Welcome to the Magic Shoppe " )
2018-04-19 01:17:40 +00:00
# 40
text [ ' sign_death_mountain_cave_back ' ] = CompressedTextMapper . convert ( " Cave away from sky cabbages " )
2018-08-04 20:29:07 +00:00
text [ ' sign_east_of_links_house ' ] = CompressedTextMapper . convert ( " ↓ Lake Hylia \n \n Also, a shop " )
2018-04-19 01:17:40 +00:00
text [ ' sign_south_of_lumberjacks ' ] = CompressedTextMapper . convert ( " ← Kakariko \n Village " )
2018-08-04 20:29:07 +00:00
text [ ' sign_east_of_desert ' ] = CompressedTextMapper . convert ( " ← Desert \n \n It ' s hot. " )
text [ ' sign_east_of_sanctuary ' ] = CompressedTextMapper . convert ( " ↑→ Potions! \n \n Wish waterfall " )
2018-04-19 01:17:40 +00:00
text [ ' sign_east_of_castle ' ] = CompressedTextMapper . convert ( " → East Palace \n \n ← Castle " )
text [ ' sign_north_of_lake ' ] = CompressedTextMapper . convert ( " \n Lake Hiriah " )
text [ ' sign_desert_thief ' ] = CompressedTextMapper . convert ( " Don ' t talk to me or touch my sign! " )
2018-08-04 20:29:07 +00:00
text [ ' sign_lumberjacks_house ' ] = CompressedTextMapper . convert ( " Lumberjacks, Inc. \n You see ' em, we saw ' em. " )
2018-04-19 01:17:40 +00:00
text [ ' sign_north_kakariko ' ] = CompressedTextMapper . convert ( " ↓ Kakariko \n Village " )
text [ ' witch_bring_mushroom ' ] = CompressedTextMapper . convert ( " Double, double toil and trouble! \n Bring me a mushroom! " )
2018-08-04 20:29:07 +00:00
text [ ' witch_brewing_the_item ' ] = CompressedTextMapper . convert ( " This mushroom is busy brewing. Come back later. " )
2018-04-19 01:17:40 +00:00
text [ ' witch_assistant_no_bottle ' ] = CompressedTextMapper . convert ( " A bottle for your thoughts? or to put potions in. " )
2018-08-04 20:29:07 +00:00
text [ ' witch_assistant_no_empty_bottle ' ] = CompressedTextMapper . convert ( " Gotta use your stuff before you can get more. " )
text [ ' witch_assistant_informational ' ] = CompressedTextMapper . convert ( " Red is life \n Green is magic \n Blue is both \n I ' ll heal you for free though. " )
text [ ' witch_assistant_no_bottle_buying ' ] = CompressedTextMapper . convert ( " If only you had something to put that in, like a bottle… " )
2018-04-19 01:17:40 +00:00
# 50
2018-08-04 20:29:07 +00:00
text [ ' potion_shop_no_empty_bottles ' ] = CompressedTextMapper . convert ( " Whoa, bucko! \n No empty bottles. " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_lamp ' ] = CompressedTextMapper . convert ( " Lamp! You can see in the dark, and light torches. " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_boomerang ' ] = CompressedTextMapper . convert ( " Boomerang! Press START to select it. " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_bow ' ] = CompressedTextMapper . convert ( " You ' re in bow mode now! " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_shovel ' ] = CompressedTextMapper . convert ( " This is my new mop. My friend George, he gave me this mop. It ' s a pretty good mop. It ' s not as good as my old mop. I miss my old mop. But it ' s still a good mop. " )
text [ ' item_get_magic_cape ' ] = CompressedTextMapper . convert ( " Finally! we get to play Invisble Man! " )
text [ ' item_get_powder ' ] = CompressedTextMapper . convert ( " It ' s the powder. Let ' s cause some mischief! " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_flippers ' ] = CompressedTextMapper . convert ( " Splish! Splash! Let ' s go take a bath! " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_power_gloves ' ] = CompressedTextMapper . convert ( " Feel the power! You can now lift light rocks! Rock on! " )
text [ ' item_get_pendant_courage ' ] = CompressedTextMapper . convert ( " We have the Pendant of Courage! How brave! " )
text [ ' item_get_pendant_power ' ] = CompressedTextMapper . convert ( " We have the Pendant of Power! How robust! " )
text [ ' item_get_pendant_wisdom ' ] = CompressedTextMapper . convert ( " We have the Pendant of Wisdom! How astute! " )
text [ ' item_get_mushroom ' ] = CompressedTextMapper . convert ( " A Mushroom! Don ' t eat it. Find a witch. " )
text [ ' item_get_book ' ] = CompressedTextMapper . convert ( " It book! U R now litterit! " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_moonpearl ' ] = CompressedTextMapper . convert ( " I found a shiny marble! No more hops! " )
text [ ' item_get_compass ' ] = CompressedTextMapper . convert ( " A compass! I can now find the boss. " )
# 60
2018-08-04 20:29:07 +00:00
text [ ' item_get_map ' ] = CompressedTextMapper . convert ( " Yo! You found a MAP! Press X to see it. " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_ice_rod ' ] = CompressedTextMapper . convert ( " It ' s the Ice Rod! Freeze Ray time. " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_fire_rod ' ] = CompressedTextMapper . convert ( " A Rod that shoots fire? Let ' s burn all the things! " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_ether ' ] = CompressedTextMapper . convert ( " We can chill out with this! " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_bombos ' ] = CompressedTextMapper . convert ( " Let ' s set everything on fire, and melt things! " )
text [ ' item_get_quake ' ] = CompressedTextMapper . convert ( " Time to make the earth shake, rattle, and roll! " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_hammer ' ] = CompressedTextMapper . convert ( " STOP! \n \n Hammer Time! " ) # 66
2018-08-04 20:29:07 +00:00
text [ ' item_get_ocarina ' ] = CompressedTextMapper . convert ( " Finally! We can play the Song of Time! " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_cane_of_somaria ' ] = CompressedTextMapper . convert ( " Make blocks! \n Throw blocks! \n splode Blocks! " )
text [ ' item_get_hookshot ' ] = CompressedTextMapper . convert ( " BOING!!! \n BOING!!! \n Say no more… " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_bombs ' ] = CompressedTextMapper . convert ( " BOMBS! Use A to pick ' em up, throw ' em, get hurt! " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_bottle ' ] = CompressedTextMapper . convert ( " It ' s a terrarium. I hope we find a lizard! " )
text [ ' item_get_big_key ' ] = CompressedTextMapper . convert ( " Yo! You got a Big Key! " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_titans_mitts ' ] = CompressedTextMapper . convert ( " So, like, you can now lift anything. \n ANYTHING! " )
text [ ' item_get_magic_mirror ' ] = CompressedTextMapper . convert ( " We could stare at this all day or, you know, beat Ganon… " )
text [ ' item_get_fake_mastersword ' ] = CompressedTextMapper . convert ( " It ' s the Master Sword! …or not… \n \n FOOL! " )
2018-04-19 01:17:40 +00:00
# 70
2018-08-04 20:29:07 +00:00
text [ ' post_item_get_mastersword ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n {SPEED6} \n @, you got the sword! \n {CHANGEMUSIC} \n Now let ' s go beat up Agahnim! " )
text [ ' item_get_red_potion ' ] = CompressedTextMapper . convert ( " Red goo to go! Nice! " )
text [ ' item_get_green_potion ' ] = CompressedTextMapper . convert ( " Green goo to go! Nice! " )
text [ ' item_get_blue_potion ' ] = CompressedTextMapper . convert ( " Blue goo to go! Nice! " )
text [ ' item_get_bug_net ' ] = CompressedTextMapper . convert ( " Surprise Net! Let ' s catch stuff! " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_blue_mail ' ] = CompressedTextMapper . convert ( " Blue threads? Less damage activated! " )
text [ ' item_get_red_mail ' ] = CompressedTextMapper . convert ( " You feel the power of the eggplant on your head. " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_temperedsword ' ] = CompressedTextMapper . convert ( " Nice… I now have a craving for Cheetos. " )
2018-04-19 01:17:40 +00:00
text [ ' item_get_mirror_shield ' ] = CompressedTextMapper . convert ( " Pit would be proud! " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_cane_of_byrna ' ] = CompressedTextMapper . convert ( " It ' s the Blue Cane. You can now protect yourself with lag! " )
2018-04-19 01:17:40 +00:00
text [ ' missing_big_key ' ] = CompressedTextMapper . convert ( " Something is missing… \n The Big Key? " )
text [ ' missing_magic ' ] = CompressedTextMapper . convert ( " Something is missing… \n Magic meter? " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_pegasus_boots ' ] = CompressedTextMapper . convert ( " Finally, it ' s bonking time! \n Hold A to dash " )
2018-04-19 01:17:40 +00:00
text [ ' talking_tree_info_start ' ] = CompressedTextMapper . convert ( " Whoa! I can talk again! " )
2018-08-04 20:29:07 +00:00
text [ ' talking_tree_info_1 ' ] = CompressedTextMapper . convert ( " Yank on the pitchfork in the center of town, ya heard it here. " )
text [ ' talking_tree_info_2 ' ] = CompressedTextMapper . convert ( " Ganon is such a dingus, no one likes him, ya heard it here. " )
2018-04-19 01:17:40 +00:00
# 80
2018-08-04 20:29:07 +00:00
text [ ' talking_tree_info_3 ' ] = CompressedTextMapper . convert ( " There is a portal near the Lost Woods, ya heard it here. " )
text [ ' talking_tree_info_4 ' ] = CompressedTextMapper . convert ( " Use bombs to quickly kill the Hinox, ya heard it here. " )
2018-04-19 01:17:40 +00:00
text [ ' talking_tree_other ' ] = CompressedTextMapper . convert ( " I can breathe! " )
2018-08-04 20:29:07 +00:00
text [ ' item_get_pendant_power_alt ' ] = CompressedTextMapper . convert ( " We have the Pendant of Power! How robust! " )
text [ ' item_get_pendant_wisdom_alt ' ] = CompressedTextMapper . convert ( " We have the Pendant of Wisdom! How astute! " )
text [ ' game_shooting_choice ' ] = CompressedTextMapper . convert ( " 20 rupees. \n 5 arrows. \n Win rupees! \n Want to play? \n ≥ yes \n no \n {CHOICE} " )
text [ ' game_shooting_yes ' ] = CompressedTextMapper . convert ( " Let ' s do this! " )
2018-04-19 01:17:40 +00:00
text [ ' game_shooting_no ' ] = CompressedTextMapper . convert ( " Where are you going? Straight up! " )
text [ ' game_shooting_continue ' ] = CompressedTextMapper . convert ( " Keep playing? \n ≥ yes \n no \n {CHOICE} " )
text [ ' pond_of_wishing ' ] = CompressedTextMapper . convert ( " -Wishing Pond- \n \n On Vacation " )
text [ ' pond_item_select ' ] = CompressedTextMapper . convert ( " Pick something \n to throw in. \n {ITEMSELECT} " )
text [ ' pond_item_test ' ] = CompressedTextMapper . convert ( " You toss this? \n ≥ yup \n wrong \n {CHOICE} " )
text [ ' pond_will_upgrade ' ] = CompressedTextMapper . convert ( " You ' re honest, so I ' ll give you a present. " )
text [ ' pond_item_test_no ' ] = CompressedTextMapper . convert ( " You sure? \n ≥ oh yeah \n um \n {CHOICE} " )
2018-08-04 20:29:07 +00:00
text [ ' pond_item_test_no_no ' ] = CompressedTextMapper . convert ( " Well, I don ' t want it, so take it back. " )
text [ ' pond_item_boomerang ' ] = CompressedTextMapper . convert ( " I don ' t much like you, so have this worse Boomerang. " )
2018-04-19 01:17:40 +00:00
# 90
2018-08-04 20:29:07 +00:00
text [ ' pond_item_shield ' ] = CompressedTextMapper . convert ( " I grant you the ability to block fireballs. Don ' t lose this to a pikit! " )
text [ ' pond_item_silvers ' ] = CompressedTextMapper . convert ( " So, wouldn ' t it be nice to kill Ganon? These should help in the final phase. " )
text [ ' pond_item_bottle_filled ' ] = CompressedTextMapper . convert ( " Bottle Filled! \n Money Saved! " )
text [ ' pond_item_sword ' ] = CompressedTextMapper . convert ( " Thank you for the sword, here is a stick of butter. " )
2018-04-19 01:17:40 +00:00
text [ ' pond_of_wishing_happiness ' ] = CompressedTextMapper . convert ( " Happiness up! \n You are now \n ᚌᚋ happy! " )
2018-08-04 20:29:07 +00:00
text [ ' pond_of_wishing_choice ' ] = CompressedTextMapper . convert ( " Your wish? \n ≥more bombs \n more arrows \n {CHOICE} " )
text [ ' pond_of_wishing_bombs ' ] = CompressedTextMapper . convert ( " Woo-hoo! \n You can now \n carry ᚌᚋ bombs " )
text [ ' pond_of_wishing_arrows ' ] = CompressedTextMapper . convert ( " Woo-hoo! \n You can now \n hold ᚌᚋ arrows " )
text [ ' pond_of_wishing_full_upgrades ' ] = CompressedTextMapper . convert ( " Youhave all I can give you, here are your rupees back. " )
text [ ' mountain_old_man_first ' ] = CompressedTextMapper . convert ( " Look out for holes, and monsters. " )
text [ ' mountain_old_man_deadend ' ] = CompressedTextMapper . convert ( " Oh, goody, hearts in jars! This place is creepy. " )
text [ ' mountain_old_man_turn_right ' ] = CompressedTextMapper . convert ( " Turn right. Let ' s get out of this place. " )
text [ ' mountain_old_man_lost_and_alone ' ] = CompressedTextMapper . convert ( " Hello. I can ' t see anything. Take me with you. " )
2018-04-19 01:17:40 +00:00
text [ ' mountain_old_man_drop_off ' ] = CompressedTextMapper . convert ( " Here ' s a thing to help you, good luck! " )
text [ ' mountain_old_man_in_his_cave_pre_agahnim ' ] = CompressedTextMapper . convert ( " You need to beat the tower at the top of the mountain. " )
2018-08-04 20:29:07 +00:00
text [ ' mountain_old_man_in_his_cave ' ] = CompressedTextMapper . convert ( " You can find stuff in the tower at the top of this mountain. \n Come see me if you ' d like to be healed. " )
2018-04-19 01:17:40 +00:00
# A0
text [ ' mountain_old_man_in_his_cave_post_agahnim ' ] = CompressedTextMapper . convert ( " You should be heading to the castle… you have a portal there now. \n Say hi anytime you like. " )
2018-08-04 20:29:07 +00:00
text [ ' tavern_old_man_awake ' ] = CompressedTextMapper . convert ( " Life? Love? Happiness? The question you should really ask is: Was this generated by Stoops Alu or Stoops Jet? " )
text [ ' tavern_old_man_unactivated_flute ' ] = CompressedTextMapper . convert ( " You should play that flute for the weathervane, cause reasons. " )
text [ ' tavern_old_man_know_tree_unactivated_flute ' ] = CompressedTextMapper . convert ( " You should play that flute for the weathervane, cause reasons. " )
text [ ' tavern_old_man_have_flute ' ] = CompressedTextMapper . convert ( " Life? Love? Happiness? The question you should really ask is: Was this generated by Stoops Alu or Stoops Jet? " )
text [ ' chicken_hut_lady ' ] = CompressedTextMapper . convert ( " This is \n Christos ' hut. \n \n He ' s out, searching for a bow. " )
2018-04-19 01:17:40 +00:00
text [ ' running_man ' ] = CompressedTextMapper . convert ( " Hi, Do you \n know Veetorp? \n \n You really \n should. And \n all the other great guys who made this possible. \n Go thank them. \n \n \n If you can catch them… " )
text [ ' game_race_sign ' ] = CompressedTextMapper . convert ( " Why are you reading this sign? Run!!! " )
text [ ' sign_bumper_cave ' ] = CompressedTextMapper . convert ( " You need Cape, but not Hookshot " )
text [ ' sign_catfish ' ] = CompressedTextMapper . convert ( " toss rocks \n toss items \n toss cookies " )
2018-08-04 20:29:07 +00:00
text [ ' sign_north_village_of_outcasts ' ] = CompressedTextMapper . convert ( " ↑ Skull Woods \n \n ↓ Steve ' s Town " )
2018-04-19 01:17:40 +00:00
text [ ' sign_south_of_bumper_cave ' ] = CompressedTextMapper . convert ( " \n → Karkats cave " )
text [ ' sign_east_of_pyramid ' ] = CompressedTextMapper . convert ( " \n → Dark Palace " )
2018-08-04 20:29:07 +00:00
text [ ' sign_east_of_bomb_shop ' ] = CompressedTextMapper . convert ( " \n ← Bomb Shoppe " )
2018-04-19 01:17:40 +00:00
text [ ' sign_east_of_mire ' ] = CompressedTextMapper . convert ( " \n ← Misery Mire \n no way in. \n no way out. " )
text [ ' sign_village_of_outcasts ' ] = CompressedTextMapper . convert ( " Have a Trulie Awesome Day! " )
# B0
text [ ' sign_before_wishing_pond ' ] = CompressedTextMapper . convert ( " waterfall \n up ahead \n make wishes " )
text [ ' sign_before_catfish_area ' ] = CompressedTextMapper . convert ( " →↑ Have you met Woeful Ike? " )
text [ ' castle_wall_guard ' ] = CompressedTextMapper . convert ( " Looking for a Princess? Look downstairs. " )
text [ ' gate_guard ' ] = CompressedTextMapper . convert ( " No Lonks Allowed! " )
text [ ' telepathic_tile_eastern_palace ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n You need a Bow to get past the red Eyegore. derpy " )
2018-08-04 20:29:07 +00:00
text [ ' telepathic_tile_tower_of_hera_floor_4 ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n If you find a shiny ball, you can be you in the Dark World. " )
2018-04-19 01:17:40 +00:00
text [ ' hylian_text_1 ' ] = CompressedTextMapper . convert ( " % == % == % == \n ^ % == % ^ \n % == ^ %% ^ ==^ " )
2018-08-04 20:29:07 +00:00
text [ ' mastersword_pedestal_translated ' ] = CompressedTextMapper . convert ( " A test of strength: If you have 3 pendants, I ' m yours. " )
text [ ' telepathic_tile_spectacle_rock ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n {NOBORDER} \n Use the Mirror, or the Hookshot and Hammer, to get to Tower of Hera! " )
2018-04-19 01:17:40 +00:00
text [ ' telepathic_tile_swamp_entrance ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n Drain the floodgate to raise the water here! " )
2018-09-23 02:51:54 +00:00
text [ ' telepathic_tile_thieves_town_upstairs ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n Blind hate ' s bright light. " )
2018-04-19 01:17:40 +00:00
text [ ' telepathic_tile_misery_mire ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n Lighting 4 torches will open your way forward! " )
text [ ' hylian_text_2 ' ] = CompressedTextMapper . convert ( " %% ^= % == % \n ^ = % ^= \n == % = ^^ % ^ " )
text [ ' desert_entry_translated ' ] = CompressedTextMapper . convert ( " Kneel before this stone, and magic will move around you. " )
2018-09-23 02:51:54 +00:00
text [ ' telepathic_tile_under_ganon ' ] = CompressedTextMapper . convert ( " Secondary tournament winners \n {HARP} \n ~~~2017~~~ \n A: Zaen " )
2018-04-19 01:17:40 +00:00
text [ ' telepathic_tile_palace_of_darkness ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n This is a funny looking Enemizer " )
# C0
text [ ' telepathic_tile_desert_bonk_torch_room ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n Things can be knocked down, if you fancy yourself a dashing dude. " )
text [ ' telepathic_tile_castle_tower ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n You can reflect Agahnim ' s energy with Sword, Bug-net or Hammer. " )
2018-08-04 20:29:07 +00:00
text [ ' telepathic_tile_ice_large_room ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n All right stop collaborate and listen \n Ice is back with my brand new invention " )
text [ ' telepathic_tile_turtle_rock ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n You shall not pass… without the red cane " )
text [ ' telepathic_tile_ice_entrace ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n You can use Fire Rod or Bombos to pass. " )
text [ ' telepathic_tile_ice_stalfos_knights_room ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n Knock ' em down and then bomb them dead. " )
text [ ' telepathic_tile_tower_of_hera_entrance ' ] = CompressedTextMapper . convert ( " {NOBORDER} \n This is a bad place, with a guy who will make you fall… \n \n \n a lot. " )
2018-09-23 02:51:54 +00:00
text [ ' houlihan_room ' ] = CompressedTextMapper . convert ( " Randomizer tournament winners \n {HARP} \n ~~~2018~~~ \n S: Andy \n \n ~~~2017~~~ \n A: ajneb174 \n S: ajneb174 " )
2018-04-19 01:17:40 +00:00
text [ ' caught_a_bee ' ] = CompressedTextMapper . convert ( " Caught a Bee \n ≥ keep \n release \n {CHOICE} " )
text [ ' caught_a_fairy ' ] = CompressedTextMapper . convert ( " Caught Fairy! \n ≥ keep \n release \n {CHOICE} " )
2018-08-04 20:29:07 +00:00
text [ ' no_empty_bottles ' ] = CompressedTextMapper . convert ( " Whoa, bucko! \n No empty bottles. " )
2018-04-19 01:17:40 +00:00
text [ ' game_race_boy_time ' ] = CompressedTextMapper . convert ( " Your time was \n ᚎᚍ min ᚌᚋ sec. " )
text [ ' game_race_girl ' ] = CompressedTextMapper . convert ( " You have 15 seconds, \n Go… Go… Go… " )
text [ ' game_race_boy_success ' ] = CompressedTextMapper . convert ( " Nice! \n You can have this trash! " )
text [ ' game_race_boy_failure ' ] = CompressedTextMapper . convert ( " Too slow! \n I keep my \n precious! " )
2018-08-04 20:29:07 +00:00
text [ ' game_race_boy_already_won ' ] = CompressedTextMapper . convert ( " You already have your prize, dingus! " )
2018-04-19 01:17:40 +00:00
# D0
2018-08-04 20:29:07 +00:00
text [ ' game_race_boy_sneaky ' ] = CompressedTextMapper . convert ( " Thought you could sneak in, eh? " )
text [ ' bottle_vendor_choice ' ] = CompressedTextMapper . convert ( " I gots bottles. \n Yous gots 100 rupees? \n ≥ I want \n no way! " )
2018-04-19 01:17:40 +00:00
text [ ' bottle_vendor_get ' ] = CompressedTextMapper . convert ( " Nice! Hold it up son! Show the world what you got! " )
2018-08-04 20:29:07 +00:00
text [ ' bottle_vendor_no ' ] = CompressedTextMapper . convert ( " Fine! I didn ' t want your money anyway. " )
text [ ' bottle_vendor_already_collected ' ] = CompressedTextMapper . convert ( " Dude! You already have it. " )
text [ ' bottle_vendor_bee ' ] = CompressedTextMapper . convert ( " Cool! A bee! Here ' s 100 rupees. " )
2018-04-19 01:17:40 +00:00
text [ ' bottle_vendor_fish ' ] = CompressedTextMapper . convert ( " Whoa! A fish! You walked this all the way here? " )
2018-08-04 20:29:07 +00:00
text [ ' hobo_item_get_bottle ' ] = CompressedTextMapper . convert ( " You think life is rough? I guess you can take my last item. Except this tent. That ' s MY tent! " )
text [ ' blacksmiths_what_you_want ' ] = CompressedTextMapper . convert ( " Nice of you to come back! \n Would you like us mess with your sword? \n ≥ Temper \n It ' s fine \n {CHOICE} " )
2018-04-19 01:17:40 +00:00
text [ ' blacksmiths_paywall ' ] = CompressedTextMapper . convert ( " It ' s 10 rupees \n ≥ Easy \n Hang on… \n {CHOICE} " )
text [ ' blacksmiths_extra_okay ' ] = CompressedTextMapper . convert ( " Are you sure you ' re sure? \n ≥ Ah, yup \n Hang on… \n {CHOICE} " )
text [ ' blacksmiths_tempered_already ' ] = CompressedTextMapper . convert ( " Whelp… We can ' t make this any better. " )
text [ ' blacksmiths_temper_no ' ] = CompressedTextMapper . convert ( " Oh, come by any time! " )
text [ ' blacksmiths_bogart_sword ' ] = CompressedTextMapper . convert ( " We ' re going to have to take it to work on it. " )
2018-08-04 20:29:07 +00:00
text [ ' blacksmiths_get_sword ' ] = CompressedTextMapper . convert ( " Sword is donw. Now, back to our bread! " )
text [ ' blacksmiths_shop_before_saving ' ] = CompressedTextMapper . convert ( " I lost my friend. Help me find him! " )
2018-04-19 01:17:40 +00:00
# E0
text [ ' blacksmiths_shop_saving ' ] = CompressedTextMapper . convert ( " You found him! Colour me happy! Come back right away and we will bang on your sword. " )
2018-08-04 20:29:07 +00:00
text [ ' blacksmiths_collect_frog ' ] = CompressedTextMapper . convert ( " Ribbit! Ribbit! Let ' s find my partner. To the shop! " )
text [ ' blacksmiths_still_working ' ] = CompressedTextMapper . convert ( " Something this precious takes time… Come back later. " )
2018-04-19 01:17:40 +00:00
text [ ' blacksmiths_saving_bows ' ] = CompressedTextMapper . convert ( " Thanks! \n \n Thanks! " )
text [ ' blacksmiths_hammer_anvil ' ] = CompressedTextMapper . convert ( " Dernt Take Er Jerbs! " )
2018-08-04 20:29:07 +00:00
text [ ' dark_flute_boy_storytime ' ] = CompressedTextMapper . convert ( " Hi! \n I ' m Stumpy \n I ' ve been chillin ' in this world for a while now, but I miss my flute. If I gave you a shovel, would you go digging for it? \n ≥ sure \n nahh \n {CHOICE} " )
text [ ' dark_flute_boy_get_shovel ' ] = CompressedTextMapper . convert ( " Schaweet! Here you go. Happy digging! " )
2018-04-19 01:17:40 +00:00
text [ ' dark_flute_boy_no_get_shovel ' ] = CompressedTextMapper . convert ( " Oh I see, not good enough for you… FINE! " )
2018-08-04 20:29:07 +00:00
text [ ' dark_flute_boy_flute_not_found ' ] = CompressedTextMapper . convert ( " Still haven ' t found the item? Dig in the Light World around here, dingus! " )
text [ ' dark_flute_boy_after_shovel_get ' ] = CompressedTextMapper . convert ( " So I gave you an item, and you ' re still here. \n \n \n \n \n \n I mean, we can sit here and stare at each other, if you like… \n \n \n \n \n \n \n \n Fine, I guess you should just go. " )
2018-04-19 01:17:40 +00:00
text [ ' shop_fortune_teller_lw_hint_0 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, the book opens the desert " )
text [ ' shop_fortune_teller_lw_hint_1 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, nothing doing " )
text [ ' shop_fortune_teller_lw_hint_2 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, I ' m cheap " )
text [ ' shop_fortune_teller_lw_hint_3 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, am I cheap? " )
text [ ' shop_fortune_teller_lw_hint_4 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, Zora lives at the end of the river " )
text [ ' shop_fortune_teller_lw_hint_5 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, The Cape can pass through the barrier " )
text [ ' shop_fortune_teller_lw_hint_6 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, Spin, Hammer, or Net to hurt Agahnim " )
text [ ' shop_fortune_teller_lw_hint_7 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, You can jump in the well by the blacksmiths " )
text [ ' shop_fortune_teller_lw_no_rupees ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n The black cats are hungry, come back with rupees " )
2018-08-04 20:29:07 +00:00
text [ ' shop_fortune_teller_lw ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Welcome to the Fortune Shoppe! \n Fancy a read? \n ≥I must know \n negative \n {CHOICE} " )
2018-04-19 01:17:40 +00:00
text [ ' shop_fortune_teller_lw_post_hint ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n For ᚋᚌ rupees \n It is done. \n Be gone! " )
text [ ' shop_fortune_teller_lw_no ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Well then, why did you even come in here? " )
text [ ' shop_fortune_teller_lw_hint_8 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, why you do? " )
text [ ' shop_fortune_teller_lw_hint_9 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, panda crackers " )
2018-08-04 20:29:07 +00:00
text [ ' shop_fortune_teller_lw_hint_10 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, the missing blacksmith is south of the Village of Outcasts " )
2018-04-19 01:17:40 +00:00
text [ ' shop_fortune_teller_lw_hint_11 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, open chests to get stuff " )
2018-08-04 20:29:07 +00:00
text [ ' shop_fortune_teller_lw_hint_12 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, you can buy a new bomb at the Bomb Shoppe " )
2018-04-19 01:17:40 +00:00
text [ ' shop_fortune_teller_lw_hint_13 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, big bombs blow up cracked walls in pyramids " )
2018-08-04 20:29:07 +00:00
text [ ' shop_fortune_teller_lw_hint_14 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, you need all the crystals to open Ganon ' s Tower " )
text [ ' shop_fortune_teller_lw_hint_15 ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n By the black cats, Silver Arrows will defeat Ganon in his final phase " )
2018-04-19 01:17:40 +00:00
text [ ' dark_sanctuary ' ] = CompressedTextMapper . convert ( " For 20 rupees I ' ll tell you something? \n How about it? \n ≥ yes \n no \n {CHOICE} " )
text [ ' dark_sanctuary_hint_0 ' ] = CompressedTextMapper . convert ( " I once was a tea kettle, but then I moved up in the world, and now you can see me as this. Makes you wonder. What I could be next time. " )
# 100
text [ ' dark_sanctuary_no ' ] = CompressedTextMapper . convert ( " Then go away! " )
text [ ' dark_sanctuary_hint_1 ' ] = CompressedTextMapper . convert ( " There is a thief in the desert, he can open creepy chests that follow you. But now that we have that out of the way, Do you like my hair? I ' ve spent eons getting it this way. " )
2018-08-04 20:29:07 +00:00
text [ ' dark_sanctuary_yes ' ] = CompressedTextMapper . convert ( " With Crystals 5&6, you can find a great fairy in the pyramid. \n \n Flomp Flomp, Whizzle Whomp " )
2018-04-19 01:17:40 +00:00
text [ ' dark_sanctuary_hint_2 ' ] = CompressedTextMapper . convert (
" All I can say is that my life is pretty plain, \n "
+ " I like watchin ' the puddles gather rain, \n "
+ " And all I can do is just pour some tea for two, \n "
+ " And speak my point of view but it ' s not sane, \n "
+ " It ' s not sane " )
2018-08-04 20:29:07 +00:00
text [ ' sick_kid_no_bottle ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n I ' m sick! Show me a bottle, get something! " )
2018-04-19 01:17:40 +00:00
text [ ' sick_kid_trade ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Cool Bottle! Here ' s something for you. " )
text [ ' sick_kid_post_trade ' ] = CompressedTextMapper . convert ( " {BOTTOM} \n Leave me alone \n I ' m sick. You have my item. " )
text [ ' desert_thief_sitting ' ] = CompressedTextMapper . convert ( " ……………………… " )
text [ ' desert_thief_following ' ] = CompressedTextMapper . convert ( " why…………… " )
2018-08-04 20:29:07 +00:00
text [ ' desert_thief_question ' ] = CompressedTextMapper . convert ( " I was a thief, I open purple chests! \n Keep secret? \n ≥ sure thing \n never! \n {CHOICE} " )
2018-04-19 01:17:40 +00:00
text [ ' desert_thief_question_yes ' ] = CompressedTextMapper . convert ( " Cool, bring me any purple chests you find. " )
text [ ' desert_thief_after_item_get ' ] = CompressedTextMapper . convert ( " You tell anyone and I will give you such a pinch! " )
2018-08-04 20:29:07 +00:00
text [ ' desert_thief_reassure ' ] = CompressedTextMapper . convert ( " Bring chests. It ' s a secret to everyone. " )
2018-04-19 01:17:40 +00:00
text [ ' hylian_text_3 ' ] = CompressedTextMapper . convert ( " ^^ ^ % =^= = % = \n = %% = %% =^ \n == % ^= % =^^ % " )
2018-08-04 20:29:07 +00:00
text [ ' tablet_ether_book ' ] = CompressedTextMapper . convert ( " Can you make things fall out of the sky? With the Master Sword, you can! " )
text [ ' tablet_bombos_book ' ] = CompressedTextMapper . convert ( " Can you make things fall out of the sky? With the Master Sword, you can! " )
2018-04-19 01:17:40 +00:00
# 110
2018-08-04 20:29:07 +00:00
text [ ' magic_bat_wake ' ] = CompressedTextMapper . convert ( " You bum! I was sleeping! Where ' s my magic bolts? " )
2018-04-19 01:17:40 +00:00
text [ ' magic_bat_give_half_magic ' ] = CompressedTextMapper . convert ( " How you like me now? " )
text [ ' intro_main ' ] = CompressedTextMapper . convert (
2018-08-04 20:29:07 +00:00
" {INTRO} \n Episode III \n {PAUSE3} \n A Link to \n the Past \n "
+ " {PAUSE3} \n Randomizer \n {PAUSE3} \n After mostly disregarding what happened in the first two games. \n "
+ " {PAUSE3} \n Link awakens to his uncle leaving the house. \n {PAUSE3} \n He just runs out the door, \n "
+ " {PAUSE3} \n into the rainy night. \n {PAUSE3} \n {CHANGEPIC} \n Ganon has moved around all the items in Hyrule. \n "
2018-04-19 01:17:40 +00:00
+ " {PAUSE7} \n You will have to find all the items necessary to beat Ganon. \n "
2018-08-04 20:29:07 +00:00
+ " {PAUSE7} \n This is your chance to be a hero. \n {PAUSE3} \n {CHANGEPIC} \n "
2018-04-19 01:17:40 +00:00
+ " You must get the 7 crystals to beat Ganon. \n {PAUSE9} \n {CHANGEPIC} " , False )
2018-08-04 20:29:07 +00:00
text [ ' intro_throne_room ' ] = CompressedTextMapper . convert ( " {IBOX} \n Look at this Stalfos on the throne. " , False )
2018-04-19 01:17:40 +00:00
text [ ' intro_zelda_cell ' ] = CompressedTextMapper . convert ( " {IBOX} \n It is your time to shine! " , False )
2018-08-04 20:29:07 +00:00
text [ ' intro_agahnim ' ] = CompressedTextMapper . convert ( " {IBOX} \n Also, you need to defeat this guy! " , False )
text [ ' pickup_purple_chest ' ] = CompressedTextMapper . convert ( " A curious box. Let ' s take it with us! " )
text [ ' bomb_shop ' ] = CompressedTextMapper . convert ( " 30 bombs for 100 rupees. Good deals all day! " )
text [ ' bomb_shop_big_bomb ' ] = CompressedTextMapper . convert ( " 30 bombs for 100 rupees, 100 rupees 1 BIG bomb. Good deals all day! " )
2018-04-19 01:17:40 +00:00
text [ ' bomb_shop_big_bomb_buy ' ] = CompressedTextMapper . convert ( " Thanks! \n Boom goes the dynamite! " )
text [ ' item_get_big_bomb ' ] = CompressedTextMapper . convert ( " YAY! press A to splode it! " )
2018-08-04 20:29:07 +00:00
text [ ' kiki_second_extortion ' ] = CompressedTextMapper . convert ( " For 100 more, I ' ll open this place. \n How about it? \n ≥ open \n nah \n {CHOICE} " )
2018-04-19 01:17:40 +00:00
text [ ' kiki_second_extortion_no ' ] = CompressedTextMapper . convert ( " Heh, good luck getting in. " )
2018-08-04 20:29:07 +00:00
text [ ' kiki_second_extortion_yes ' ] = CompressedTextMapper . convert ( " Yay! Rupees! \n Okay, let ' s do this! " )
text [ ' kiki_first_extortion ' ] = CompressedTextMapper . convert ( " I ' m Kiki, I like rupees, may I have 10? \n How about it? \n ≥ yes \n no \n {CHOICE} " )
2018-04-19 01:17:40 +00:00
text [ ' kiki_first_extortion_yes ' ] = CompressedTextMapper . convert ( " Nice. I ' ll tag along with you for a bit. " )
# 120
2018-08-04 20:29:07 +00:00
text [ ' kiki_first_extortion_no ' ] = CompressedTextMapper . convert ( " Pfft. I have no reason to hang. See ya! " )
2018-04-19 01:17:40 +00:00
text [ ' kiki_leaving_screen ' ] = CompressedTextMapper . convert ( " No no no no no! We should play by my rules! Goodbye… " )
text [ ' blind_in_the_cell ' ] = CompressedTextMapper . convert ( " You saved me! \n Please get me out of here! " )
text [ ' blind_by_the_light ' ] = CompressedTextMapper . convert ( " Aaaahhhh~! \n S-so bright~! " )
text [ ' blind_not_that_way ' ] = CompressedTextMapper . convert ( " No! Don ' t go that way! " )
2018-08-04 20:29:07 +00:00
text [ ' aginah_l1sword_no_book ' ] = CompressedTextMapper . convert ( " I once had a fish dinner. I still remember it to this day. " )
2018-04-19 01:17:40 +00:00
text [ ' aginah_l1sword_with_pendants ' ] = CompressedTextMapper . convert ( " Do you remember when I was young? \n \n I sure don ' t. " )
text [ ' aginah ' ] = CompressedTextMapper . convert ( " So, I ' ve been living in this cave for years, and you think you can just come along and bomb open walls? " )
2018-08-04 20:29:07 +00:00
text [ ' aginah_need_better_sword ' ] = CompressedTextMapper . convert ( " Once, I farted in this cave so bad all the jazz hands guys ran away and hid in the sand. " )
text [ ' aginah_have_better_sword ' ] = CompressedTextMapper . convert ( " Pandas are very vicious animals. Never forget… \n \n \n \n \n I never will " )
text [ ' catfish ' ] = CompressedTextMapper . convert ( " You woke me from my nap! Take this, and get out! " )
2018-07-15 00:46:42 +00:00
text [ ' catfish_after_item ' ] = CompressedTextMapper . convert ( " I don ' t have anything else for you! \n Take this! " )
2018-04-19 01:17:40 +00:00
# 12C
text [ ' lumberjack_right ' ] = CompressedTextMapper . convert ( " One of us always lies. " )
text [ ' lumberjack_left ' ] = CompressedTextMapper . convert ( " One of us always tells the truth. " )
2018-08-04 20:29:07 +00:00
text [ ' lumberjack_left_post_agahnim ' ] = CompressedTextMapper . convert ( " One of us likes peanut butter. " )
2018-04-19 01:17:40 +00:00
text [ ' fighting_brothers_right ' ] = CompressedTextMapper . convert ( " I walled off my brother Leo \n \n What a dingus. \n " )
# 130
text [ ' fighting_brothers_right_opened ' ] = CompressedTextMapper . convert ( " Now I should probably talk to him… " )
2018-08-04 20:29:07 +00:00
text [ ' fighting_brothers_left ' ] = CompressedTextMapper . convert ( " Did you come from my brothers room? \n \n Are we cool? " )
2018-04-19 01:17:40 +00:00
text [ ' maiden_crystal_1 ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n I have a pretty red dress. \n {SPEED1} \n Just thought I would tell you. " )
text [ ' maiden_crystal_2 ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n I have a pretty blue dress. \n {SPEED1} \n Just thought I would tell you. " )
text [ ' maiden_crystal_3 ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n I have a pretty gold dress. \n {SPEED1} \n Just thought I would tell you. " )
text [ ' maiden_crystal_4 ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n I have a pretty redder dress. \n {SPEED1} \n Just thought I would tell you. " )
text [ ' maiden_crystal_5 ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n I have a pretty green dress. \n {SPEED1} \n Just thought I would tell you. " )
text [ ' maiden_crystal_6 ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n I have a pretty green dress. \n {SPEED1} \n Just thought I would tell you. " )
2018-08-04 20:29:07 +00:00
text [ ' maiden_crystal_7 ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n It ' s about friggin time. \n {SPEED1} \n Do you know how long I ' ve been waiting? " )
text [ ' maiden_ending ' ] = CompressedTextMapper . convert ( " May the way of the hero lead to the Triforce " )
2018-04-19 01:17:40 +00:00
text [ ' maiden_confirm_undersood ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n Capisce? \n ≥ Yes \n No \n {CHOICE} " )
2018-08-04 20:29:07 +00:00
text [ ' barrier_breaking ' ] = CompressedTextMapper . convert ( " What did the seven crystals say to Ganon ' s Tower? " )
2018-04-19 01:17:40 +00:00
text [ ' maiden_crystal_7_again ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {BOTTOM} \n {NOBORDER} \n It ' s about friggin time. \n {SPEED1} \n Do you know how long I have been waiting? " )
2018-08-04 20:29:07 +00:00
text [ ' agahnim_zelda_teleport ' ] = CompressedTextMapper . convert ( " I am a magician, and this is my act. Watch as I make this girl disappear " )
2018-04-19 01:17:40 +00:00
text [ ' agahnim_magic_running_away ' ] = CompressedTextMapper . convert ( " And now, the end is near \n And so I face the final curtain \n My friend, I ' ll say it clear \n I ' ll state my case, of which I ' m certain \n I ' ve lived a life that ' s full \n I ' ve traveled each and every highway \n But more, much more than this \n I did it my way " )
text [ ' agahnim_hide_and_seek_found ' ] = CompressedTextMapper . convert ( " Peek-a-boo! " )
text [ ' agahnim_defeated ' ] = CompressedTextMapper . convert ( " Arrrgggghhh. Well you ' re coming with me! " )
2018-08-04 20:29:07 +00:00
text [ ' agahnim_final_meeting ' ] = CompressedTextMapper . convert ( " You have done well to come this far. Now, die! " )
2018-04-19 01:17:40 +00:00
# 142
text [ ' zora_meeting ' ] = CompressedTextMapper . convert ( " What do you want? \n ≥ Flippers \n Nothin ' \n {CHOICE} " )
2018-08-04 20:29:07 +00:00
text [ ' zora_tells_cost ' ] = CompressedTextMapper . convert ( " Fine! But they aren ' t cheap. You got 500 rupees? \n ≥ Duh \n Oh carp \n {CHOICE} " )
text [ ' zora_get_flippers ' ] = CompressedTextMapper . convert ( " Here ' s some Flippers for you! Swim little fish, swim. " )
2018-04-19 01:17:40 +00:00
text [ ' zora_no_cash ' ] = CompressedTextMapper . convert ( " Fine! \n Go get some more money first. " )
text [ ' zora_no_buy_item ' ] = CompressedTextMapper . convert ( " Wah hoo! Well, whenever you want to see these gills, stop on by. " )
text [ ' kakariko_saharalasa_grandson ' ] = CompressedTextMapper . convert ( " My grandpa is over in the East. I ' m bad with directions. I ' ll mark your map. Best of luck! \n {HARP} " )
text [ ' kakariko_saharalasa_grandson_next ' ] = CompressedTextMapper . convert ( " Someday I ' ll be in a high school band! " )
text [ ' dark_palace_tree_dude ' ] = CompressedTextMapper . convert ( " Did you know… \n \n \n A tree typically has many secondary branches supported clear of the ground by the trunk. This trunk typically contains woody tissue for strength, and vascular tissue to carry materials from one part of the tree to another. " )
text [ ' fairy_wishing_ponds ' ] = CompressedTextMapper . convert ( " \n -wishing pond- \n \n Throw item in? \n ≥ Yesh \n No \n {CHOICE} " )
text [ ' fairy_wishing_ponds_no ' ] = CompressedTextMapper . convert ( " \n stop it! " )
text [ ' pond_of_wishing_no ' ] = CompressedTextMapper . convert ( " \n fine then! " )
2018-08-04 20:29:07 +00:00
text [ ' pond_of_wishing_return_item ' ] = CompressedTextMapper . convert ( " Okay. Here ' s your item back, cause I can ' t use it. I ' m stuck in this fountain " )
2018-04-19 01:17:40 +00:00
text [ ' pond_of_wishing_throw ' ] = CompressedTextMapper . convert ( " How many? \n ≥ᚌᚋ rupees \n ᚎᚍ rupees \n {CHOICE} " )
text [ ' pond_pre_item_silvers ' ] = CompressedTextMapper . convert ( " I like you, so here ' s a thing you can use to beat up Ganon. " )
# 150
text [ ' pond_of_wishing_great_luck ' ] = CompressedTextMapper . convert ( " \n is great luck " )
text [ ' pond_of_wishing_good_luck ' ] = CompressedTextMapper . convert ( " \n is good luck " )
text [ ' pond_of_wishing_meh_luck ' ] = CompressedTextMapper . convert ( " \n is meh luck " )
# Repurposed to no items in Randomizer
text [ ' pond_of_wishing_bad_luck ' ] = CompressedTextMapper . convert ( " Why you come in here and pretend like you have something this fountain wants? Come back with bottles! " )
text [ ' pond_of_wishing_fortune ' ] = CompressedTextMapper . convert ( " by the way, your fortune, " )
text [ ' item_get_14_heart ' ] = CompressedTextMapper . convert ( " 3 more to go \n ¼ \n Yay! " )
text [ ' item_get_24_heart ' ] = CompressedTextMapper . convert ( " 2 more to go \n ½ \n Whee! " )
text [ ' item_get_34_heart ' ] = CompressedTextMapper . convert ( " 1 more to go \n ¾ \n Good job! " )
text [ ' item_get_whole_heart ' ] = CompressedTextMapper . convert ( " You got a whole ♥!! \n Go you! " )
text [ ' item_get_sanc_heart ' ] = CompressedTextMapper . convert ( " You got a whole ♥! \n Go you! " )
text [ ' fairy_fountain_refill ' ] = CompressedTextMapper . convert ( " Well done, lettuce have a cup of tea… " )
text [ ' death_mountain_bullied_no_pearl ' ] = CompressedTextMapper . convert ( " I wrote a word. Just one. On a stone and threw it into the ocean. It was my word. It was what would save me. I hope someday someone finds that word and brings it to me. The word is the beginning of my song. " )
text [ ' death_mountain_bullied_with_pearl ' ] = CompressedTextMapper . convert ( " I wrote a song. Just one. On a guitar and threw it into the sky. It was my song. It could tame beasts and free minds. It flitters on the wind and lurks in our minds. It is the song of nature, of humanity, of dreams and dreamers. " )
text [ ' death_mountain_bully_no_pearl ' ] = CompressedTextMapper . convert ( " Add garlic, ginger and apple and cook for 2 minutes. Add carrots, potatoes, garam masala and curry powder and stir well. Add tomato paste, stir well and slowly add red wine and bring to a boil. Add sugar, soy sauce and water, stir and bring to a boil again. " )
text [ ' death_mountain_bully_with_pearl ' ] = CompressedTextMapper . convert ( " I think I forgot how to smile… " )
text [ ' shop_darkworld_enter ' ] = CompressedTextMapper . convert ( " It ' s dangerous outside, buy my crap for safety. " )
# 160
2018-08-04 20:29:07 +00:00
text [ ' game_chest_village_of_outcasts ' ] = CompressedTextMapper . convert ( " Pay 30 rupees, open 2 chests. Are you lucky? \n So, Play game? \n ≥ play \n never! \n {CHOICE} " )
text [ ' game_chest_no_cash ' ] = CompressedTextMapper . convert ( " So, like, you need 30 rupees. \n Silly! " )
2018-04-19 01:17:40 +00:00
text [ ' game_chest_not_played ' ] = CompressedTextMapper . convert ( " You want to play a game? \n Talk to me. " )
text [ ' game_chest_played ' ] = CompressedTextMapper . convert ( " You ' ve opened the chests! \n Time to go. " )
text [ ' game_chest_village_of_outcasts_play ' ] = CompressedTextMapper . convert ( " Alright, brother! \n Go play! " )
text [ ' shop_first_time ' ] = CompressedTextMapper . convert ( " Welcome to my shop! Select stuff with A. \n DO IT NOW! " )
2018-08-04 20:29:07 +00:00
text [ ' shop_already_have ' ] = CompressedTextMapper . convert ( " So, like, you already have one of those. " )
text [ ' shop_buy_shield ' ] = CompressedTextMapper . convert ( " Thanks! Now you can block fire balls. " )
2018-04-19 01:17:40 +00:00
text [ ' shop_buy_red_potion ' ] = CompressedTextMapper . convert ( " Red goo, so good! It ' s like a fairy in a bottle, except you have to activate it yourself. " )
2018-08-04 20:29:07 +00:00
text [ ' shop_buy_arrows ' ] = CompressedTextMapper . convert ( " Arrows! Cause you were too lazy to look under some pots! " )
text [ ' shop_buy_bombs ' ] = CompressedTextMapper . convert ( " You bought bombs. What, couldn ' t find any under bushes? " )
text [ ' shop_buy_bee ' ] = CompressedTextMapper . convert ( " He ' s my best friend. Please take care of him, and never lose him. " )
2018-04-19 01:17:40 +00:00
text [ ' shop_buy_heart ' ] = CompressedTextMapper . convert ( " You really just bought this? " )
text [ ' shop_first_no_bottle_buy ' ] = CompressedTextMapper . convert ( " Why does no one own bottles? Go find one first! " )
text [ ' shop_buy_no_space ' ] = CompressedTextMapper . convert ( " You are carrying to much crap, go use some of it first! " )
2018-08-04 20:29:07 +00:00
text [ ' ganon_fall_in ' ] = CompressedTextMapper . convert ( " You drove \n away my other \n self, Agahnim, \n two times… \n But, I won ' t \n give you the \n Triforce. \n I ' ll defeat \n you! " )
2018-04-19 01:17:40 +00:00
# 170
2018-08-04 20:29:07 +00:00
text [ ' ganon_phase_3 ' ] = CompressedTextMapper . convert ( " Can you beat \n my darkness \n technique? " )
2018-04-19 01:17:40 +00:00
text [ ' lost_woods_thief ' ] = CompressedTextMapper . convert ( " Have you seen Andy? \n \n He was out looking for our prized Ether medallion. \n I wonder when he will be back? " )
2018-08-04 20:29:07 +00:00
text [ ' blinds_hut_dude ' ] = CompressedTextMapper . convert ( " I ' m just some dude. This is Blind ' s hut. " )
2018-04-19 01:17:40 +00:00
text [ ' end_triforce ' ] = CompressedTextMapper . convert ( " {SPEED2} \n {MENU} \n {NOBORDER} \n G G " )
text [ ' toppi_fallen ' ] = CompressedTextMapper . convert ( " Ouch! \n \n You Jerk! " )
text [ ' kakariko_tavern_fisherman ' ] = CompressedTextMapper . convert ( " Don ' t argue \n with a frozen \n Deadrock. \n He ' ll never \n change his \n position! " )
2018-08-04 20:29:07 +00:00
text [ ' thief_money ' ] = CompressedTextMapper . convert ( " It ' s a secret to everyone. " )
text [ ' thief_desert_rupee_cave ' ] = CompressedTextMapper . convert ( " So you, like, busted down my door, and are being a jerk by talking to me? Normally I would be angry and make you pay for it, but I bet you ' re just going to break all my pots and steal my 50 rupees. " )
text [ ' thief_ice_rupee_cave ' ] = CompressedTextMapper . convert ( " I ' m a rupee pot farmer. One day I will take over the world with my skillz. Have you met my brother in the desert? He ' s way richer than I am. " )
2018-04-19 01:17:40 +00:00
text [ ' telepathic_tile_south_east_darkworld_cave ' ] = CompressedTextMapper . convert ( " ~~ dev cave ~~ \n no farming \n required " )
text [ ' cukeman ' ] = CompressedTextMapper . convert ( " Did you hear that Veetorp beat ajneb174 in a 1 on 1 race at AGDQ? " )
2018-08-04 20:29:07 +00:00
text [ ' cukeman_2 ' ] = CompressedTextMapper . convert ( " You found Shabadoo, huh? \n Niiiiice. " )
2018-04-19 01:17:40 +00:00
text [ ' potion_shop_no_cash ' ] = CompressedTextMapper . convert ( " Yo! I ' m not running a charity here. " )
text [ ' kakariko_powdered_chicken ' ] = CompressedTextMapper . convert ( " Smallhacker… \n \n \n Was hiding, you found me! \n \n \n Okay, you can leave now. " )
2018-08-04 20:29:07 +00:00
text [ ' game_chest_south_of_kakariko ' ] = CompressedTextMapper . convert ( " Pay 20 rupees, open 1 chest. Are you lucky? \n So, Play game? \n ≥ play \n never! \n {CHOICE} " )
2018-04-19 01:17:40 +00:00
text [ ' game_chest_play_yes ' ] = CompressedTextMapper . convert ( " Good luck then " )
# 180
text [ ' game_chest_play_no ' ] = CompressedTextMapper . convert ( " Well fine, I didn ' t want your rupees. " )
2018-08-04 20:29:07 +00:00
text [ ' game_chest_lost_woods ' ] = CompressedTextMapper . convert ( " Pay 100 rupees open 1 chest. Are you lucky? \n So, Play game? \n ≥ play \n never! \n {CHOICE} " )
2018-04-19 01:17:40 +00:00
text [ ' kakariko_flophouse_man_no_flippers ' ] = CompressedTextMapper . convert ( " I sure do have a lot of beds. \n \n Zora is a cheapskate and will try to sell you his trash for 500 rupees… " )
text [ ' kakariko_flophouse_man ' ] = CompressedTextMapper . convert ( " I sure do have a lot of beds. \n \n Did you know if you played the flute in the center of town things could happen? " )
text [ ' menu_start_2 ' ] = CompressedTextMapper . convert ( " {MENU} \n {SPEED0} \n ≥@ ' s house \n Sanctuary \n {CHOICE3} " , False )
text [ ' menu_start_3 ' ] = CompressedTextMapper . convert ( " {MENU} \n {SPEED0} \n ≥@ ' s house \n Sanctuary \n Mountain Cave \n {CHOICE2} " , False )
text [ ' menu_pause ' ] = CompressedTextMapper . convert ( " {SPEED0} \n ≥continue \n save and quit \n {CHOICE3} " , False )
text [ ' game_digging_choice ' ] = CompressedTextMapper . convert ( " Have 80 Rupees? Want to play digging game? \n ≥yes \n no \n {CHOICE} " )
text [ ' game_digging_start ' ] = CompressedTextMapper . convert ( " Okay, use the shovel with Y! " )
text [ ' game_digging_no_cash ' ] = CompressedTextMapper . convert ( " Shovel rental is 80 rupees. \n I have all day " )
2018-08-04 20:29:07 +00:00
text [ ' game_digging_end_time ' ] = CompressedTextMapper . convert ( " Time ' s up! \n Time for you to go. " )
2018-04-19 01:17:40 +00:00
text [ ' game_digging_come_back_later ' ] = CompressedTextMapper . convert ( " Come back later, I have to bury things. " )
text [ ' game_digging_no_follower ' ] = CompressedTextMapper . convert ( " Something is following you. I don ' t like. " )
text [ ' menu_start_4 ' ] = CompressedTextMapper . convert ( " {MENU} \n {SPEED0} \n ≥@ ' s house \n Mountain Cave \n {CHOICE3} " , False )
# Start of new text data
text [ ' ganon_fall_in_alt ' ] = CompressedTextMapper . convert ( " You think you \n are ready to \n face me? \n \n I will not die \n \n unless you \n complete your \n goals. Dingus! " )
text [ ' ganon_phase_3_alt ' ] = CompressedTextMapper . convert ( " Got wax in \n your ears? \n I cannot die! " )
# 190
2018-08-04 20:29:07 +00:00
text [ ' sign_east_death_mountain_bridge ' ] = CompressedTextMapper . convert ( " How did you get up here? " )
text [ ' fish_money ' ] = CompressedTextMapper . convert ( " It ' s a secret to everyone. " )
2018-04-19 01:17:40 +00:00
text [ ' end_pad_data ' ] = bytearray ( [ 0xfb ] )
2018-07-15 01:11:31 +00:00
text [ ' terminator ' ] = bytearray ( [ 0xFF , 0xFF ] )