Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Albert Odyssey: Legend of Eldean

From The Cutting Room Floor
Jump to: navigation, search

Title Screen

Albert Odyssey: Legend of Eldean

Developer: Sunsoft
Publishers: Sunsoft (JP), Working Designs (US), Wooyoung System (KR)
Platform: Sega Saturn
Released in JP: August 9, 1996
Released in US: July 31, 1997
Released in KR: 1997


CodeIcon.png This game has unused code.
SoundIcon.png This game has unused sounds.
TextIcon.png This game has unused text.
RegionIcon.png This game has regional differences.


A run-of-the-mill RPG made special by its humorous translation from Working Designs.

Unused Sounds

Present on the North American releases of the game are three inappropriate sound files that aren't referenced in any of the event scripts.

AFF0001.AIF
AFS0001.AIF
AMS0001.AIF

Unused Text

Meow. Meow, I say.
Woof! Rrrrrfff! Woof!

There is a dog and cat in Gigarl, but talking to them only gives a sound effect with no text.

The Immortal Emperor Radoria proved to be mortal after all, and peace returned to the land.
Pike and his friends were praised as heroes and showered with gifts.
Many years have passed since Radoria was destroyed, and people are already starting to forget the horror.
Then, one day...

Not only is the intermission between the two chapters given verbally with no subtitles, but this version of it found in the script for Harpy Village is also written slightly differently.

Revisional Differences

Hmmm...
To do:
Upload JP version sound effects, note the differences written in the manual, find differences between JP revisions, pictures, etc.

(Japan) to (USA)

  • The Sunsoft boot logo has been replaced with an animated Working Designs logo, synched to the same sound effect as the original.
  • Various voice samples where characters speak Japanese have been replaced with generic animal noises (Gryzz, Amon) or grunts (Leos, Eka's death scream).
  • After-battle information will proceed automatically in the US version, but the player must press A for each message in the Japanese version.
  • Sell prices for common healing items are higher in the American release.

(USA) to (USA) (RE)

In the first version of MAP055.TWN, Eka is a bit strapped for cash. The original file is timestamped as being last modified 06/24/1997, while the updated one was last modified 08/08/1997.

(USA) (USA) (RE)
I'm Eka, and this is my friend, Pike. We've traveled a long way to fine one qualified to assist us, Leos. I'm Eka, and this is my friend, Pike. We've traveled a long way to find one qualified to assist us, Leos.

MAP014.TWN, the town data for Gigarl, has had unknown changes made to the map itself, though the script is exactly the same. The original file is timestamped as being last modified 06/24/1997, while the updated one was last modified 08/13/1997.

Uncompiled Source Code

Located in A_TAM.C is uncompiled C code used for initializing save data. It even contains references to a Z-axis player position variable which is marked with 未使用 (Unused).

The code contains three test saves, the first starts the game as a new file but the other two start the player in specific locations.

Save 2 (Stuck in Pike's bed in Harpy Village) Save 3 (Entrance to Solace)
Albert Odyssey Save1.png Albert Odyssey Save2.png
/***********************************************************

	SRAMイメージテーブル初期化

***********************************************************/
void SramImageInit(){

	BackUpData_Type *sram;
	ChrStatus *str;
	Uint16 i;

	strcpy(BackUpData.SramMemberStr[0].SramName,"\xf5\x61\x67\xa0\xa0");	/* パイク  */
	strcpy(BackUpData.SramMemberStr[1].SramName,"\x63\x65\xa0\xa0\xa0");	/* エカ    */
	strcpy(BackUpData.SramMemberStr[2].SramName,"\x86\x64\x6c\xa0\xa0");	/* レオス   */
	strcpy(BackUpData.SramMemberStr[3].SramName,"\x63\x85\xce\x9b\xa0");	/* エルダー */
	strcpy(BackUpData.SramMemberStr[4].SramName,"\x60\x82\x8d\xa0\xa0");	/* アモン   */

	sram = &BackUpData;
#if 0
	sram->Sramroomnumber = 0;	/* 部屋番号 */
	sram->Sramposh = 0;			/* キャラクタ位置H */
	sram->Sramposv = 0;			/* キャラクタ位置V */
	sram->Sramplace = 0;		/* 主人公のいる場所 (0:街 1:フィールド) */
	sram->Sramhitflg = 0;		/* キャラクタ位置アトリビュート */
	sram->Sramposz = 0;			/* キャラクタ位置Z(未使用)*/
#endif

#if 0
	sram->Sramroomnumber = 8;	/* 部屋番号 */
	sram->Sramposh = 0x2a80;	/* キャラクタ位置H */
	sram->Sramposv = 0x65a0;	/* キャラクタ位置V */
	sram->Sramplace = 0;		/* 主人公のいる場所 (0:街 1:フィールド) */
	sram->Sramhitflg = 0;		/* キャラクタ位置アトリビュート */
	sram->Sramposz = 2;			/* キャラクタ位置Z(未使用)*/
#endif

#if 1
	sram->Sramroomnumber = 0x42;		/* 部屋番号 */
	sram->Sramposh = 0x55d0;			/* キャラクタ位置H */
	sram->Sramposv = 0x7dd0;			/* キャラクタ位置V */
	sram->Sramplace = 0;				/* 主人公のいる場所 (0:街 1:フィールド) */
	sram->Sramhitflg = 0;				/* キャラクタ位置アトリビュート */
	sram->Sramposz = 6;					/* キャラクタ位置Z(未使用)*/
#endif

	sram->SramMachiFlag = 0;	/* 町フラグ 			(M)*/
						/* b0:シトナス   b1:トマリ   b2:マイセント b3:ルクナート*/
						/* b4:トランピア b5:リリカル b6:ジェッジ		*/
	sram->Sramplaneposh = 0;		/* 飛空定位置H */
	sram->Sramplaneposv = 0;		/* 飛空挺位置V */
	sram->Sramworldh = 0;			/* フィールド座標H 		(M)*/
	sram->Sramworldv = 0;			/* フィールド座標V 		(M)*/
#if 1
	sram->Srammembervalue1 = 2;		/* パーティー人数(ステータスあり)	(M)(戦) */
	sram->Srammembervalue2 = 0;		/* パーティー人数(ステータスなし)*/
	sram->SramMember[0] = 0;		/* パーティーメンバ		(M)(戦) */
	sram->SramMember[1] = 1;
	sram->SramMember[2] = 0;
	sram->SramMember[3] = 0;
	sram->SramMember[4] = 0;
	sram->Sramplaneflg = 0;			/* 飛空挺所持フラグ */
#endif
#if 0
	sram->Srammembervalue1 = 1;		/* パーティー人数(ステータスあり)	(M)(戦) */
	sram->Srammembervalue2 = 0;		/* パーティー人数(ステータスなし)*/
	sram->SramMember[0] = 0;		/* パーティーメンバ		(M)(戦) */
	sram->SramMember[1] = 0;
	sram->SramMember[2] = 0;
	sram->SramMember[3] = 0;
	sram->SramMember[4] = 0;
	sram->Sramplaneflg = 0;			/* 飛空挺所持フラグ */
#endif

/* カーソル記憶時 記憶バッファ */
	sram->SramRemainCursorFlg = 0;	/* 設定 カーソル固定・記憶	(M)(戦)*/
	sram->SramSelectMenuNum = 0;	/* メイン 選択中メニュー番号	(M)*/
	sram->SramSelectItem = 0;		/* 選択中 道具番号 		(M)*/
	sram->SramSelectDoukoChr = 0;	/* 道具 選択対象キャラクタ番号	(M)*/
	sram->SramMagicUse = 0;			/* 呪文 選択中キャラクタ番号 	(M)*/
	sram->SramSelectMagicChr = 0;	/* 呪文 選択対象キャラクタ番号	(M)*/
	sram->SramSelectHeroMagic = 0;	/* 選択中 呪文番号(主人公)	(M)*/
	sram->SramSelectHeroinMagic = 0;/* 選択中 呪文番号(ヒロイン)	(M)*/
	sram->SramSelectLoesMagic = 0;	/* 選択中 呪文番号(レオス・キャロル)(M)*/
	sram->SramSoubiUse = 0;			/* 装備 選択中キャラクタ番号	(M)*/
	sram->SramSelectSoubi = 0;		/* 選択中 装備の種類番号 	(M)*/
	sram->SramStrUse = 0;			/* 強さ 選択中キャラクタ番号	(M)*/
	sram->SramSelectTereport = 0;	/* 選択中 テレポート移動先	(M)*/
	sram->SramSelectMapSet = 0;		/* 設定 選択中項目番号          (M)*/
	sram->SramSoundStereo = 0;		/* 設定 サウンド Stereo/Mono	(M)*/
	sram->SramFileLoadNumber = 0;	/* 設定 ファイルロード番号 	(M)*/
	sram->SramByeItemSelect = 0;	/* 選択 売却カーソル位置        (M)*/
	sram->SramSaveDevice = 0;		/* 使用ディバイス 0:CpuRam 1:BackupCat */
	sram->SramSaveFileNo = 0;		/* バックアツプファイル位置 */
	sram->SramSaveDate = 0;			/* セーブ時刻(圧縮) */

		/*//// 戦闘用カーソル位置記憶	(戦)*/
	for(i=0; i<12; i++)
		sram->SramBattleMenu[i] = 0;
		/*//// アイテムの数			(M)(戦)*/
	for(i=0; i<256; i++)
		sram->SramItemValue[i];
		/*//// 宝箱フラグ			    	*/
	for(i=0; i<0x80; i++)
		sram->TreasureFlg[i] = 0;
		/*//// 所持金				(M)(戦)*/
	sram->SramMoney = 0;
		/*//// イベントフラグ 				*/
	for(i=0; i<0x40; i++)
		sram->SramEvent[i] = 0;
		/* キャラステータス		   (M)(戦) */

	strcpy(BackUpData.SramMemberStr[0].SramName,"\xf5\x61\x67\xa0\xa0");	/* パイク  */
	BackUpData.SramMemberStr[0].SramLevel		=55;
	BackUpData.SramMemberStr[0].SramMaxHp		=268;
	BackUpData.SramMemberStr[0].SramHp		=148;
	BackUpData.SramMemberStr[0].SramMaxMp		=156;
	BackUpData.SramMemberStr[0].SramMp		=148;
	BackUpData.SramMemberStr[0].SramMeichu1		=10;
	BackUpData.SramMemberStr[0].SramMeichu2		=11;
	BackUpData.SramMemberStr[0].SramKaihi1		=12;
	BackUpData.SramMemberStr[0].SramKaihi2		=12;
	BackUpData.SramMemberStr[0].SramKougeki1	=13;
	BackUpData.SramMemberStr[0].SramKougeki2	=13;
	BackUpData.SramMemberStr[0].SramBougyo1		=14;
	BackUpData.SramMemberStr[0].SramBougyo2		=15;
	BackUpData.SramMemberStr[0].SramSeimei1		=16;
	BackUpData.SramMemberStr[0].SramSeimei2		=17;
	BackUpData.SramMemberStr[0].SramMaryoku1	=18;
	BackUpData.SramMemberStr[0].SramMaryoku2	=19;
	BackUpData.SramMemberStr[0].SramSpeed1		=20;
	BackUpData.SramMemberStr[0].SramSpeed2		=21;
	BackUpData.SramMemberStr[0].SramExp		=3450l;
	BackUpData.SramMemberStr[0].SramArmor		=0x97;
	BackUpData.SramMemberStr[0].SramShield		=0x6b;
	BackUpData.SramMemberStr[0].SramAccessory	=0xaa;
	BackUpData.SramMemberStr[0].SramArms		=0x1b;
	BackUpData.SramMemberStr[0].SramAremStr		=0;
	BackUpData.SramMemberStr[0].SramStr		=0;
	BackUpData.SramMemberStr[0].SramMagic		=0;

	strcpy(BackUpData.SramMemberStr[1].SramName,"\x63\x65\xa0\xa0\xa0");	/* エカ    */
	BackUpData.SramMemberStr[1].SramLevel		=51;
	BackUpData.SramMemberStr[1].SramMaxHp		=3256;
	BackUpData.SramMemberStr[1].SramHp		=128;
	BackUpData.SramMemberStr[1].SramMaxMp		=156;
	BackUpData.SramMemberStr[1].SramMp		=149;
	BackUpData.SramMemberStr[1].SramMeichu1		=50;
	BackUpData.SramMemberStr[1].SramMeichu2		=50;
	BackUpData.SramMemberStr[1].SramKaihi1		=51;
	BackUpData.SramMemberStr[1].SramKaihi2		=12;
	BackUpData.SramMemberStr[1].SramKougeki1	=13;
	BackUpData.SramMemberStr[1].SramKougeki2	=51;
	BackUpData.SramMemberStr[1].SramBougyo1		=52;
	BackUpData.SramMemberStr[1].SramBougyo2		=52;
	BackUpData.SramMemberStr[1].SramSeimei1		=53;
	BackUpData.SramMemberStr[1].SramSeimei2		=53;
	BackUpData.SramMemberStr[1].SramMaryoku1	=54;
	BackUpData.SramMemberStr[1].SramMaryoku2	=54;
	BackUpData.SramMemberStr[1].SramSpeed1		=55;
	BackUpData.SramMemberStr[1].SramSpeed2		=55;
	BackUpData.SramMemberStr[1].SramExp		=31456;
	BackUpData.SramMemberStr[1].SramArmor		=0;
	BackUpData.SramMemberStr[1].SramShield		=0;
	BackUpData.SramMemberStr[1].SramAccessory	=0;
	BackUpData.SramMemberStr[1].SramArms		=0;
	BackUpData.SramMemberStr[1].SramAremStr		=0;
	BackUpData.SramMemberStr[1].SramStr		=0;
	BackUpData.SramMemberStr[1].SramMagic		=0;


	strcpy(BackUpData.SramMemberStr[2].SramName,"\x86\x64\x6c\xa0\xa0");	/* レオス   */
	BackUpData.SramMemberStr[2].SramLevel		=55;
	BackUpData.SramMemberStr[2].SramMaxHp		=3123;
	BackUpData.SramMemberStr[2].SramHp		=112;
	BackUpData.SramMemberStr[2].SramMaxMp		=456;
	BackUpData.SramMemberStr[2].SramMp		=123;
	BackUpData.SramMemberStr[2].SramMeichu1		=10;
	BackUpData.SramMemberStr[2].SramMeichu2		=10;
	BackUpData.SramMemberStr[2].SramKaihi1		=11;
	BackUpData.SramMemberStr[2].SramKaihi2		=12;
	BackUpData.SramMemberStr[2].SramKougeki1	=13;
	BackUpData.SramMemberStr[2].SramKougeki2	=11;
	BackUpData.SramMemberStr[2].SramBougyo1		=12;
	BackUpData.SramMemberStr[2].SramBougyo2		=12;
	BackUpData.SramMemberStr[2].SramSeimei1		=13;
	BackUpData.SramMemberStr[2].SramSeimei2		=13;
	BackUpData.SramMemberStr[2].SramMaryoku1	=14;
	BackUpData.SramMemberStr[2].SramMaryoku2	=14;
	BackUpData.SramMemberStr[2].SramSpeed1		=15;
	BackUpData.SramMemberStr[2].SramSpeed2		=15;
	BackUpData.SramMemberStr[2].SramExp		=74685;
	BackUpData.SramMemberStr[2].SramArmor		=0;
	BackUpData.SramMemberStr[2].SramShield		=0;
	BackUpData.SramMemberStr[2].SramAccessory	=0;
	BackUpData.SramMemberStr[2].SramArms		=0;
	BackUpData.SramMemberStr[2].SramAremStr		=0;
	BackUpData.SramMemberStr[2].SramStr		=0;
	BackUpData.SramMemberStr[2].SramMagic		=0;


	strcpy(BackUpData.SramMemberStr[3].SramName,"\x63\x85\xce\x9b\xa0");	/* エルダー */
	BackUpData.SramMemberStr[3].SramLevel		=45;
	BackUpData.SramMemberStr[3].SramMaxHp		=2256;
	BackUpData.SramMemberStr[3].SramHp		=128;
	BackUpData.SramMemberStr[3].SramMaxMp		=156;
	BackUpData.SramMemberStr[3].SramMp		=148;
	BackUpData.SramMemberStr[3].SramMeichu1		=20;
	BackUpData.SramMemberStr[3].SramMeichu2		=20;
	BackUpData.SramMemberStr[3].SramKaihi1		=21;
	BackUpData.SramMemberStr[3].SramKaihi2		=12;
	BackUpData.SramMemberStr[3].SramKougeki1	=13;
	BackUpData.SramMemberStr[3].SramKougeki2	=21;
	BackUpData.SramMemberStr[3].SramBougyo1		=22;
	BackUpData.SramMemberStr[3].SramBougyo2		=22;
	BackUpData.SramMemberStr[3].SramSeimei1		=23;
	BackUpData.SramMemberStr[3].SramSeimei2		=23;
	BackUpData.SramMemberStr[3].SramMaryoku1	=24;
	BackUpData.SramMemberStr[3].SramMaryoku2	=24;
	BackUpData.SramMemberStr[3].SramSpeed1		=25;
	BackUpData.SramMemberStr[3].SramSpeed2		=25;
	BackUpData.SramMemberStr[3].SramExp		=161;
	BackUpData.SramMemberStr[3].SramArmor		=0;
	BackUpData.SramMemberStr[3].SramShield		=0;
	BackUpData.SramMemberStr[3].SramAccessory	=0;
	BackUpData.SramMemberStr[3].SramArms		=0;
	BackUpData.SramMemberStr[3].SramAremStr		=0;
	BackUpData.SramMemberStr[3].SramStr		=0;
	BackUpData.SramMemberStr[3].SramMagic		=0;

	strcpy(BackUpData.SramMemberStr[4].SramName,"\x60\x82\x8d\xa0\xa0");	/* アモン   */
	BackUpData.SramMemberStr[4].SramLevel		=36;
	BackUpData.SramMemberStr[4].SramMaxHp		=3524;
	BackUpData.SramMemberStr[4].SramHp		=18;
	BackUpData.SramMemberStr[4].SramMaxMp		=0;
	BackUpData.SramMemberStr[4].SramMp		=0;
	BackUpData.SramMemberStr[4].SramMeichu1		=30;
	BackUpData.SramMemberStr[4].SramMeichu2		=30;
	BackUpData.SramMemberStr[4].SramKaihi1		=31;
	BackUpData.SramMemberStr[4].SramKaihi2		=12;
	BackUpData.SramMemberStr[4].SramKougeki1	=13;
	BackUpData.SramMemberStr[4].SramKougeki2	=31;
	BackUpData.SramMemberStr[4].SramBougyo1		=32;
	BackUpData.SramMemberStr[4].SramBougyo2		=32;
	BackUpData.SramMemberStr[4].SramSeimei1		=33;
	BackUpData.SramMemberStr[4].SramSeimei2		=33;
	BackUpData.SramMemberStr[4].SramMaryoku1	=34;
	BackUpData.SramMemberStr[4].SramMaryoku2	=34;
	BackUpData.SramMemberStr[4].SramSpeed1		=35;
	BackUpData.SramMemberStr[4].SramSpeed2		=35;
	BackUpData.SramMemberStr[4].SramExp		=0;
	BackUpData.SramMemberStr[4].SramArmor		=0xff;
	BackUpData.SramMemberStr[4].SramShield		=0xff;
	BackUpData.SramMemberStr[4].SramAccessory	=0xff;
	BackUpData.SramMemberStr[4].SramArms		=0xff;
	BackUpData.SramMemberStr[4].SramAremStr		=0;
	BackUpData.SramMemberStr[4].SramStr		=0;
	BackUpData.SramMemberStr[4].SramMagic		=0;

	BackUpData.Srammembervalue1=2;		/* パーティ人数 */
	BackUpData.SramMember[0]=0;
	BackUpData.SramMember[1]=1;
	BackUpData.SramMember[2]=2;
	BackUpData.SramMember[3]=3;
	BackUpData.SramMember[4]=4;

	BackUpData.SramMoney=553500;		/* 所持金 */
#if 0
	for(i=0; i<5; i++){
		str = &sram->SramMemberStr[i];
		str->SramLevel = 1;			/* レベル			(M)(戦)*/
		/* str->SramName[6];		/* 名前		9999		(M)(戦)*/
		str->SramMaxHp = 38;		/* HP				(M)(戦)*/
		str->SramHp = 38;			/* MaxHP			(M)(戦)*/
		str->SramMaxMp = 5;			/* MP		999		(M)(戦)*/
		str->SramMp = 5;			/* MaxMP			(M)(戦)*/
		str->SramMeichu1 = 75;		/* 命中率	200		(M)(戦)*/
		str->SramMeichu2 = 75;		/* 命中率 規準			(M)(戦)*/
		str->SramKaihi1 = 10;		/* 回避力	200		(M)(戦)*/
		str->SramKaihi2 = 10;		/* 回避力 規準			(M)(戦)*/
		str->SramKougeki1 = 10;		/* 攻撃力	999		(M)(戦)*/
		str->SramKougeki2 = 10;		/* 攻撃力 規準			(M)(戦)*/
		str->SramBougyo1 = 4;		/* 防御力	999		(M)(戦)*/
		str->SramBougyo2 = 4;		/* 防御力 規準			(M)(戦)*/
		str->SramSeimei1 = 45;		/* 生命力	200		(M)(戦)*/
		str->SramSeimei2 = 45;		/* 生命力 規準			(M)(戦)*/
		str->SramMaryoku1 = 5;		/* 魔力		200		(M)(戦)*/
		str->SramMaryoku2 = 5;		/* 魔力   規準			(M)(戦)*/
		str->SramSpeed1 = 32;		/* 素早さ	89		(M)(戦)*/
		str->SramSpeed2 = 32;		/* 素早さ 規準			(M)(戦)*/
		str->SramExp = 0;			/* 経験値			(M)(戦)*/
		str->SramArmor = 0xff;		/* 現在装備中の鎧		(M)(戦)*/
		str->SramShield = 0xff;		/* 現在装備中の縦		(M)(戦)*/
		str->SramAccessory = 0xff;	/* 現在装備中のアクセサリー	(M)(戦)*/
		str->SramArms = 0xff;		/* 現在装備中の武器		(M)(戦)*/
		str->SramAremStr = 0;
		str->SramStr = 0;			/* (戦) */
		str->SramMagic = 0;			/* 魔法取得フラグ */
	}
#endif
}