TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #6028: Challenger's Genesis Cadash in 15:34.65

Console: Sega Genesis
Game name: Cadash
Game version: USA
ROM filename: Cadash (U) [c][!].bin
Branch:
Emulator: BizHawk 2.2.1
Movie length: 15:34.65
FrameCount: 56007
Re-record count: 268100
Author's real name:
Author's nickname: Challenger
Submitter: Challenger
Submitted at: 2018-07-07 21:46:26
Text last edited at: 2018-07-15 16:13:52
Text last edited by: Memory
Download: Download (29244 bytes)
Status: judging underway
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
After 4 months of extensive work and revisions, here comes another update to the "First 500" project for me (for the third time)! The current run was published on 2006-02-21, but was originally submitted on 2005-07-07. So, technically is an 2005 run (like a few others)

This run is an improvement of 22907 frames (actually 22931 frames due to emulation differences) over the published run by using 2 players, new tricks and glitches, better boss fights, and greater movement precision.

Encode

Game objectives

  • Emulator used: BizHawk 2.2.1 (also syncs on latter versions)

  • 2 players

  • Uses death to save time

  • Takes damage to save time

  • Heavy glitch abuse

About the game

Cadash is a sword and sorcery video game which combines elements of both the role-playing video game genre of games and the platform genre of games. The game was originally an arcade game released by Taito in 1989, later ported to home video game consoles such as the TurboGrafx-16 in 1991, and the Sega Mega Drive/Genesis in 1992. Isn't the most straightforward of platformers, seeing how you can actually gain levels and buy items in this one. There are also mandatory items to fetch and quests to complete in order to advance.

General notes (partially finished)

  • First of all, this game reads input every 2 frames as opposed to every frame. So, menuing, continuing dialogues (with 2p input) and the doors can be advanced/inputted a frame earlier.

  • With an extra player, there are several rooms where I stop/turnaround sometimes to avoid lag.

  • Jumping stops you for a frame when landing.

  • Taking damage increases horizontal speed (to always 131072 value) until he lands - one of main keys of this run.

Mage speed stats per level

lev 1 96768 lev 6 105472 lev 11 109568 lev 16 112640
lev 2 98304 lev 7 106752 lev 12 110336 lev 17 113408
lev 3 100352 lev 8 107264 lev 13 111104 lev 18 114176
lev 4 101888 lev 9 107776 lev 14 111616 lev 19 114944
lev 5 103424 lev 10 109056 lev 15 112128 lev 20 115200

Fighter speed stats per level

lev 1 109824 lev 6 118528 lev 11 127744 lev 16 135936
lev 2 111616 lev 7 120320 lev 12 129536 lev 17 137216
lev 3 113408 lev 8 122368 lev 13 131584 lev 18 138240
lev 4 114944 lev 9 124160 lev 14 133376 lev 19 139264
lev 5 116992 lev 10 126208 lev 15 134912 lev 20 140032

  • Because of less level up for fighter, I lost some frames nearly every room of this game (considering how leveling up needs a lot of exp).

  • About the ropes: Performing a downwards attack while in air can result of a new trick: if you intend to climb down, you can grab a rope on a pixel lower; And if you intend to climb up, you can raise some pixels before grabs a rope.

Stage-by-Stage Comments

Power-on

  • 13 frames saved on the title screen (could be only 10 frames, but since 2p input also works here, +3 frames were saved).

  • Mage is selected because when the game starts, the 2nd player is a bit farther to the left than player 1. So, mage assumes 1p stats while fighter assumes 2p stats.

Stage 1

  • Fighter picks a medicinal herb (but costs ~3 seconds). Reason will be revealed later!

  • Could be entered that door (which leads you to cave) a frame earlier, but after my lastest castle revision, I ended with some added lag in the cave. Reason: Like I explained before, this game reads input every 2 frames as opposed to every frame - but this "way" can result an input desync if I enter the next room with a single different frame. This is one a few rooms of this game to sacrifice a frame just to avoid desync.

Cave

  • First objective: Leveling up mage until level 3, to gain the most important key of this run: flying dagger's spell, which does 40 HP (each dagger)for every enemy/boss.

  • Can't avoid those falling rocks this time because of slower mage and to avoid lag.

Boss: Black Pudding (Life: 288 HP)

  • With that spell, both players can attack without waiting at all.

  • On the portal room: I used mage to talk while fighter still moves - so, the door is opened a few frames earlier, and during the opening, a mid-air turnaround trick is used to gain a few pixels that only works with fighter.

Stage 2

  • I bought an extra continue (but costs a lot of time) which is necessary for the last 2 stages.

Cave

  • Like the published run, you can bypass this stage without the need of Mermaid Scale (which allows players to bypass waters safely)

  • Weapon shop skipped, no fire sword this time.

Stage 3

  • Without fire sword for fighter, flying daggers replaces this, as well as optimizing movement while avoiding lag as much as possible.

Boss: Worm (Life: 10 hits?)

This boss has 65535 HP, but actually can be defeated with only 10 hits no matter what spell/weapon damages him. Also for some reason, if you attack using the second player, he recieves damage every frame. Destroyed with only 2 sword attacks (first attack = 7 hits; second attack = 3 hits). Since I don't understand about debugging at all, I asked Alyosha (author of the "first 500" topic) to understand how this bug works. He wrote this:

  So what happened here is an error in the way player 2's damage is calculated.
  To see what happened, first let's look at player 1. Player 1's damage is calculated like this:
  01446C:  5268  addq.w  #1, ($9C,A0) ....
  A0 is the base offset for which enemy the game is checking if damage is being dealt to. For the worm boss, A0 is FF10C0.
  $9C is the offset, so that line of code is adding 1 to FF10C0 + 9C, which is FF115C, the bosses health.
  Once this is done, the game will check other memory locations for enemies there, the next A0 would be FF11C0 and so on.
  Now for some reason, player 2 is calculated differently:
  014594:  5279  addq.w  #1, ($FF115C) ...
  It adds damage directly to the boss.
  This is fine for the first loop at A0 = FF10C0, since this is indeed the bosses head. Once you hit the boss, the invincibility timer starts and
  you can no longer deal damage.
  But, the game also adds this damage when in contact with the second segment at A0 = FF11C0! Since the game isn't using the offset to add
  the damage to the correct location, the boss takes the damage every frame."
Now, backtrack...

  • Mage is killed to gain some boost on the next screen.

  • Since I have a weaker sword, nearly all enemies during the remaining of the cave were skipped.

  • On the second-to-last room before the village,

  • On the next room, I killed a few enemies since I used only one medicinal herb and still need to keep these continues.

  • In the village, fighter (when small) uses 65536 speed value. Small mage also uses the same value. How interesting.

Stage 4

  • In the first cave room, our first shortcut of this TAS: By dying, respawning and jumping on mid-air, if you respawn the other player on the very top of the screen, this game pushes the player to left and you must wait until the other player lands - so you can move again.

  • In the village, I bought a new weapon for mage, to save time on the next battles.

  • Back to the shortcut room, I could return to the graveyard a frame earlier, but...

  • ...graveyard lags so much that was the second hardest path of this run to optimize.

  • Unavoidable thief during the way to the boss (since I haven't bypassed that side before)

Boss: Fire Elemental (Life: 896 HP)

  • Strategy:

- Mage attack (with a new weapon): 21 damage, and spell again.

- Fighter attack (same weapon as published run): 22 damage this run (level 6, strength 37) while the published run does 26 damage per hit (level 8, strength 41)

Cycles:

published run: 1 - 286 damage, 2 - *260 damage*, 3 - 286 damage, 4 - remaining HP (64)

new run: 1 - 713 damage, 2 - remaining HP (183)

  • normally you must dodge that fire (which forces you to delay the first attack), but I recently found a better way to avoid this (and without the need to jump), allowing fighter to deliver an extra attack - frame perfect and reaching 286 damage 1 frame before he splits into flames.

Stage 5

  • Skipping enemies, again.

  • Since the jump height isn't enough to reach the very top, mid-air jump + reviving mage to skip directly to golden key path - also skipping Jelly Giant boss.

  • Since Balrog is located "in the other side" of this castle, and I skipped that key, I need to kill a player (fighter because he has less than 100 HP so he can die earlier than mage) to revive later (on the path with hidden platforms) at the same time for skip that backtracking (normally you must return to the very first door of the castle, then open the golden door to continue the rest of stage) directly to the last path of castle from the third path of doors.

Boss: Worm (again, but his life is now 20 hits)

Strategy: Same from stage 3.

Boss 2: Balrog

  • Phase 1: HP value starts with 34412 and can be defeated starting with 32767 HP (1645 HP).

Strategy: Mage spell, attack with turnarounds to manipulate his position, since you need to avoid lighting, as well as defeating on the lowest position as possible, because the phase 2 loads...

  • Phase 2: ...when he lands. Dragon Balrog continues to use the HP value of phase 1! So, we must continue to attack until he reaches 31231 HP or lower

Strategy: Hitting Dragon Balrog's head normally does a bit more damage than the body, but the multi-hit glitch also works here! Since the glitch only works by the second player, fighter uses this while mage...same strategy - with a lot of careful timing and manupulation of flying daggers - 5 hits per cycle.

Castle (return)

  • A dialogue between Princess Salassa and "Fake King" are skipped by entering the door.

Boss: Dragon Balrog (again)

  • Starts with 34816 HP, loses his wings starting with 32767 HP and ends starting with 31231 HP.

Strategy: Similar as phase 2, (with a few differences), and ending input with the last multi-hit set. Balrog dies at 31229 HP with a last flying dagger at the end of magic timing.

Memory addresses

Address Set #106: Cadash
System: Sega Genesis
Download .wch file for: BizHawk
Domain Address Data Type Signed Endian Description
System Bus 01BE Word Unsigned Big 1p X position
System Bus 01DA Word Unsigned Big 1p Y position
System Bus 0A7A Word Unsigned Big Continues
System Bus 0B5C Word Unsigned Big Mage charging / changing magic (counter)
System Bus 0B9C Word Unsigned Big X scroll speed
System Bus 0DCA Word Unsigned Big 1p X speed
System Bus 0DCE Word Unsigned Big 1p Y speed
System Bus 0E44 Word Unsigned Big 1p invicibility timer
System Bus 0E4A Word Unsigned Big 1p EXP
System Bus 0E50 Word Unsigned Big 1p HP
System Bus 0E52 Word Unsigned Big 1p Strength
System Bus 0E56 Word Unsigned Big 1p MP
System Bus 0E58 Word Unsigned Big 1p A.C.
System Bus 0E5A Word Unsigned Big 1p Agility
System Bus 0E8E Word Unsigned Big 1p Money
System Bus 0E9C Word Unsigned Big 1p EXP to next level
System Bus 0F42 Word Unsigned Big 2p X position
System Bus 0F46 Word Unsigned Big 2p Y position
System Bus 0F4A Word Unsigned Big 2p X speed
System Bus 0F4E Word Unsigned Big 2p Y speed
System Bus 0FC4 Word Unsigned Big 2p invicibility timer
System Bus 0FCA Word Unsigned Big 2p EXP
System Bus 0FD0 Word Unsigned Big 2p HP
System Bus 0FD2 Word Unsigned Big 2p Strength
System Bus 0FD6 Word Unsigned Big 2p MP
System Bus 0FD8 Word Unsigned Big 2p A.C
System Bus 0FDA Word Unsigned Big 2p Agility
System Bus 100E Word Unsigned Big 2p Money
System Bus 1012 Word Unsigned Big 2p medicinal herbs
System Bus 101C Word Unsigned Big 2p EXP to next level
System Bus 10C2 Word Unsigned Big X enemy position
System Bus 10C6 Word Unsigned Big Y enemy position
System Bus 1134 Word Unsigned Big 1st enemy/boss HP
System Bus 1150 Word Unsigned Big Invicibility boss timer (magic
System Bus 115C Word Unsigned Big Number of hits (for worm boss)
System Bus 1234 Word Unsigned Big 2nd enemy/Satan boss HP
System Bus 1334 Word Unsigned Big 3rd enemy on screen
System Bus 1434 Word Unsigned Big 4th enemy on screen
System Bus 1534 Word Unsigned Big 5th enemy on screen
System Bus 1634 Word Unsigned Big 6th enemy on screen
System Bus 1734 Word Unsigned Big 7th enemy on screen

Special thanks

  • nifboy, for the published run.

  • Aqfaq, for mentioned some useful things to a 2p run, including more about the mid-air jump glitch, which could be useful to do possible shortcuts.

  • Sonikkustar, for the WIP of 1p, 2p, and for a RAM watch - were one of main keys to find improvements.

  • Alyosha, not only for the "First 500" topic but for the help about how "that glitch" works on the worm boss (mentioned before).

  • I also d'like to thanks The8bitbeast for his tutorial video about finding RAM addresses in Bizhawk. Helped me so much that I also used Sonikkustar's RAM Watch to find much more addresses and research for this game.


Memory: Judging

Similar submissions (by title and categories where applicable):