DMG Adventure II
A continuation of https://github.com/john-lay/dmg-adventure built with GB Studio 2-beta4
Technical notes
Variable list
A listing of variables and their types in re-usable components (Actors/Scenes)
Global
$00$: Variable 000
Health -number
. (0-4 Indicates the number of hearts Zelda has)$01$: Variable 001
Rupees -number
. (Indicates the number of rupees Zelda has collected)$02$: Variable 002
Scene Flags -byte
.- (Flag 1 represents the enemy dropping a rupee)
- (Flag 2 represents the enemy dropping a heart)
- (Flag 3 represent the enemy dropped a rupee or a heart))
- (Flag 4 represents Zelda has spoken to a fairy))
- (Flag 5 is ???))
- (Flag 6 is ???))
- (Flag 7 is ???))
- (Flag 8 is ???))
$03$: Variable 003
Wand Equipped -bool
.$04$: Variable 004
Spell Equipped -byte
.- (Flag 1 represents Zelda has the Axe equipped - costs 1 Rupee to cast)
- (Flag 2 represents Zelda has the Noise spell equipped - costs 1 Rupee to cast)
- (Flag 3 represents Zelda has the Turquoise Ring spell equipped - costs 26 Rupees to cast)
- (Flag 4 represents Zelda has the Jade Amulet spell equipped - costs 24 Rupees to cast)
- (Flag 5 represents Zelda has the feather spell equipped - costs 2 Rupees to cast)
- (Flag 6 represents Zelda has the pyros spell equipped - costs 4 Rupees to cast)
- (Flag 7 represents Zelda has the broadsword equipped - costs 2 Rupees to cast)
- (Flag 8 represents Zelda has the Rings of Fire equipped - costs 3 Rupees to cast)
$05$: Variable 005
Spell Cost -number
. (Cost of the equipped spell)$06$: Variable 006
Collectable -byte
.- (Flag 1 is the Axe)
- (Flag 2 is the Raft)
- (Flag 3 is the Noise spell)
- (Flag 4 is the Harp)
- (Flag 5 is Feather)
- (Flag 6 is Flute)
- (Flag 7 is Pyros)
- (Flag 8 is Broadsword)
$07$: Variable 007
Purchasable -byte
.- (Flag 1 is the Turquoise Ring)
- (Flag 2 is the Jade Amulet)
- (Flag 3 is the Rings of Fire)
- (Flag 4 is bone)
- (Flag 5 is axe)
- (Flag 6 is potion)
- (Flag 7 is candle)
- (Flag 8 is ???)
$08$: Variable 008
Illusion Shrine Flags -byte
.- (Flag 1 is the Orb)
- (Flag 2 is the Map)
- (Flag 3 is the Compass)
- (Flag 4 is key)
- (Flag 5 is dagger)
- (Flag 6 is represents Zelda has placed the Orb on the Pedestal)
- (Flag 7 is represents Zelda has used the first key)
- (Flag 8 is represents Zelda has used the second key)
$09$: Variable 009
Overworld Flags -byte
.- (Flag 1 represents Zelda has spoken to the White Steed Lodgekeep)
- (Flag 2 represents Zelda has spoken to Lonlyn in Verna)
- (Flag 3 represents Zelda has completed the Illusion Shrine)
- (Flag 4 represents Zelda has completed the Air Shrine)
- (Flag 5 is ???)
- (Flag 6 is ???)
- (Flag 7 is ???)
- (Flag 8 is ???)
$10$: Variable 010
Dungeon Room -number
. (Indicates the dungeon room Zelda occupies)$11$: Variable 011
Enemy Counter -number
. (Indicates the number of Zelda has defeated in this scene)$12$: Variable 012
Air Shrine Flags -byte
.- (Flag 1 represents Zelda has the Calm spell equipped - costs 1 Rupee to cast)
- (Flag 2 is the Map)
- (Flag 3 is the Compass)
- (Flag 4 is the Rug)
- (Flag 5 is the Bow + Arrow)
- (Flag 6 represents Zelda has the Bow + Arrow equipped - costs 1 Rupee to cast)
- (Flag 7 represents Zelda has defeated the second Vapora)
- (Flag 8 Represents Zelda has restored the bridge)
$13$: Variable 013
Destiny Shrine Flags -byte
.- (Flag 1 represents Zelda has the Calm spell equipped - costs 1 Rupee to cast)
- (Flag 2 is the Map)
- (Flag 3 is the Compass)
- (Flag 4 represents Zelda has activated a switch)
- (Flag 5 represents Malmord is in his shadow form)
- (Flag 6 is ???)
- (Flag 7 is ???)
- (Flag 8 is ???)
Dev Notes
Encapsulation
The best way to enable reusable code components is to encapsulate the logic for a particular feature into a script. For example the calculation to display the number of rupees is contained in the rupee counter actor which sets the hundreds, tens and units. Other scripts can decrement the total number of rupees, but to update the UI the rupee counter actor (hundreds) script must be called. The same is done for the health (hearts). This was done for DMG Adventure (part I) where:
- The Wand was responsible for calculating what it hit
- Enemies were responsible for calculating when they hit Zelda
- The heart / rupee collectible was responsible for dislaying the right collectable item, but it was incorrectly responsible for updating the heart and rupee counter.
Enemy References (DMG Adventure I)
Where possible enemies have been identified in Zelda's Adventure and their conterpart has been used from Link's Awakening. When the enemy doesn't exist in Link's Awakening I've tried to carefully substitute it with an enemy that is both similar and likely to be unique to Link's Awakening. This is to prevent future iterations of the project from having collisions when I try to identify enemies later in the game and find I've already used their counterpart.
Enemies from Zelda's Adventure
Enemies from Link's Awakening
Goriya -> Darknut
Tektites -> Beetle
Moblin -> Moblin
Deeler -> Spiny Beetle
Moby -> Crow
Leever -> Leever
Keese -> Keese
Unknown enemy -> Zol
Peahat -> Octorok
Sardak (Sheepman) -> Shrouded Stalfos
Llort (Lort) -> Stalfos
Enemy References (DMG Adventure II)
Bago-Bago -> Piranha
Peahat -> Peahat
Tektite -> Tektite
Deeler -> Beetle
Molluska -> Spiny Beetle
Jackaroo -> Iron Mask
Vire -> Vire
Pols Voice -> Pols Voice
Patra -> Oracle of Ages Eyesoar
Romraven -> Dacto
Lowder -> Hard Hat Beetle
Vapora -> Oracle of Ages Smog
Dragonfly -> Battle Bat (Grim Creeper's minion)
Loccasins -> Battle Bat (Grim Creeper's minion)
Volta -> Pairodd
Crystal Shard -> Oracle of Seasons Frypolar (ice attack)
Tornado -> Oracle of Ages/Seasons Gale seed
Puffers (Baboon Head) -> Oracle of Seasons (modified) Magnite
Gibdo -> Gibdo
NPC References (DMG Adventure I)
Ogbam forest shop keeper -> Shopkeeper
Witch in Ogbam forest -> Syrup
Empty bottle lady -> Grandma Ulrira
Hungry mother near Moblin inn -> Mamasha
Moblin innkeep -> trendy game guy
Moblin inn patron -> Madam Meow-meow, Grandpa Ulrira, Birdkeeper
NPC References (DMG Adventure II)
Great Wimbich
Alice -> Oracle of Ages (past) young lady
Eric/Ian -> Mamasha's twins
Twin's Father -> Papahl
Yvonne (music lover) -> Marin
Ghost farmer -> Ghost
Town square merchant -> Crazy Tracy
Bored guy on Upper Street -> Oracle of Ages (past) young guy
Dog on Upper Street -> Oracle of Ages (present) Mamamu Yan's dog
General shop (dog owner) -> Oracle of Ages (present) Mamamu Yan
General shop jester -> Oracle of Ages (present) Comedian
Madam Kriggle -> Oracle of Ages (present) old lady
Blacksmith -> Oracle of Ages (past) old guy
Plain of Donora
Plain of Donora trader -> Oracle of Ages (present) Dr. Troy
Plain of Donora gate keeper -> Oracle of Ages (present) young guy
Torian Forest
White Steed Lodgekeep -> Richard
White Steed Patron -> Oracle of Ages (present) old guy
White Steed Patron -> Oracle of Seasons drunk guy
White Steed Barman -> Oracle of Seasons Mayor Ruul
Waldensop -> Oracle of Ages (present) Mayor Plen
Sir Basil -> Oracle of Ages (past) Guard
Verna
Gwynla (noise spell) -> Oracle of Ages (present) young lady
Lonlyn (noise spell) -> Oracle of Seasons old guy
Guy with Bard -> Oracle of Ages (past) young guy alt
Bard -> Oracle of Seasons Guitar player
Around the Air Shrine
Bitterbeck (by the fire) -> Fisherman
Nimonee (north of Air Shrine) -> Oracle of Seasons Impa
Thabul (outside cave) -> Oracle of Seasons Old Lady