Excalibur 2 Get Even with Dragon (The Return of the Devil) by Norio Kitajima Preservation and ROMhack by Garrett Gilchrist (TygerbugGarrett) Translation assistance by Rani Baker (destroyed4com4t) Thanks to "PC-986," Ozidual and Gaming Alexandria Playtesting by cabbusses (3 hours worth) Published on pages 85-86 of Micom BASIC (マイコン BASIC) 03/1987. Scans via PC-986. https://archive.org/details/micomBASIC19841994 https://www.gamingalexandria.com/wp/2022/02/nintendo-family-basic-type-in-games/ __________________________ This is a standalone ROM prepared as an IPS patch of Hudson's Family BASIC 3 (1985) for the Nintendo Family Computer / Nintendo Entertainment System. This minigame is a rudimentary RPG, and ambitious by Family BASIC standards, which only allowed for small amounts of code. This game currently requires the Family BASIC Keyboard, or a similar NES Keyboard, or a NES Emulator with the Family BASIC keyboard set up. Not all emulators support the Keyboard. (It would be nice to rework the code to be playable with the controller, perhaps in the future. For now this could be accomplished to an extent with a Joystick to Keyboard program on PC.) __________________________ You have defeated the evil dragon, taken the town and driven demons from the country. You saved your lover. But that dragon has returned and caught your fiancee. You set off again. You must walk around the country typing commands. You have to defeat the monsters and level up. Find three hidden holy swords. Find the Dragon Castle. Get gold, which will help you talk to certain monsters and get to the bottom of things. Defeat the dragon and save your lover. Stay at the inn/hotel with C to replenish physical strength. There are two such places at different corners of the map. This costs gold. Use magic with U. This may help you warp and find the secret swords. You can walk through the forest (wooded area) and through places you might not expect. There are some places you can't go. The Forest of Hope lies to the north-west. In the south-west is the Mysterious Forest. In the south-east is the Evil Forest. Skeletal thieves may be talkative. Bribe them with gold. Watch your health. __________________________ The original Family Basic program used the generic Family BASIC graphics, including Mario and the Donkey Kong/Mario Bros enemies. The characters have been replaced with sprites based on those of other games like Ys and Dragon Warrior (Druid, Monster World, DragonDePlatino customs). More enemy sprites appear in the ROM than are actually used. I wasn't overly concerned with originality but most are edited somewhat. A large dragon graphic has been added based on my own art for the Colecovision port of Arcomage. This replaces the original text "Excalibur 2: You killed/ evil dragon/ but he/ returned/ and caught/ your/ fiancee." Text was transcribed from the original magazine printing of the BASIC code by myself. It has also been translated to English with thanks to Rani Baker. Minor changes were made to the layout. This game may still have some BASIC errors, although it has been corrected after some playtesting. It is possible that the game could be hacked further to include more features, such as controller control, but the BASIC code is already close to erroring out of memory. Family Basic 3 has very limited RAM for code. Ideally I'd want more code for the player to react visually when fighting, and perhaps allow for more enemy variations visually. When the player is at a high level, enemies appear who look like the player and his fiancee. Some of the subtleties of the code are still a bit hard to figure out. The hidden swords are hard to find, and the hints given by the skeletal thieves are vague, unless they were lost in translation. I've tried to make them less so here. When the Family Keyboard is not correctly hooked up, or enabled in the emulator, the program will speed through the first few commands. This can result in a default name of "AGON," borrowed from "DRAGON" in the title. __________________________ REQUIRED HACKING FROM COMPILED SOURCE: The minimap does not appear in the source code provided, nor the original Japanese text, in order to avoid using special characters that would not compile easily. Xes are used instead. Here, however, is the intended code. MAP (624C in ROM, each line between quote marks): C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3 C3C0C3C3C3FEFEFEC3FEFEDBC1DBC3 C3FEFEFEC3DBDBDBC3FEFEDBDBDBC3 C3C3C3FEFEC3FEFEFEC3FEFEC3C3C3 C3DBDBDBDBFEFEC3FEFEC3FEC3FEC3 C3DBFEDBDBFEC3FEDBDBDBC3FEFEC3 C3DBDBDBDBFEFEFEC3C3C3FEFEFEC3 C3FEFEC3C3C3C3FEFEC3C3FEC3FEC3 C3FEC3C3DBFEFEC3FEFEFEFEC3FEC3C3 C3C3DBDBDBC3FEC3FEC3FEC3DBDBDBC3 C3C3DBDBC3FEFEC3FEFEC0C3DBDBDBC3 C3FEDBC3FEFEFEFEFEC3C3C3DBDBDBC3 C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3 An "X" in line 390 of the BASIC code must also be corrected to C3. (5DBD here) This is wall-collision code. 4FD0 palettes 21020F3027180F3027160F2936170F3621120F3027140F3524170F3027160F30 __________________________ 7BE0 background graphic (with dragon) 2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020DEE3E3E3E3E3E3E3DFDEE3E3E3E3E3DF20202020010203040506072020202020E24E414D45202020E2E220204E2020E220202008090A0B0C0D0E0F1020202020E220202020202020E2E22020202020E220202011121314151617181920202020E24C494645202020E2E25720202045E220201A1B1C1D1E1F6061626320202020E220202020202020E2E22020202020E220076465666768696A6B6C6D20202020E2535452454E4720E2E22020532020E2206E6F70717220737475767720202020E220202020202020E2E0E3E3E3E3E3E12078797A7B7C207D7E7F808120202020E244455854202020E2202020202020202082838485868788898A8B8C20202020E220202020202020E2DB20574F4F4420208D8E8F909192939495969720202020E245585020202020E2202020202020202098999A9B9C9D9E899FA0A120202020E220202020202020E2FE20574159202020A2A3A407A5A6A794A8A9AA20202020E2474F4C44202020E22020202020202020ABACADAEAFB0B1B2B3B4B520202020E220202020202020E2C32057414C4C202020B6B7B8B9BABBBCBDBEBF20202020E24D414749433D55E2202020202020202020232425262A2B5B5C5D5E20202020E220202020202020E2C020433D494E4E2020202020CDCEF9FAFBFC0020202020E0E3E3E3E3E3E3E3E12020202020202020202020202020202020202020202020DEE3E3E3E3DFDEE3E3E3E3DFDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3DF20202020E220202020E2E220202020E2E22020202020202020202020202020E220202020E220202020E2E220202020E2E22020202020202020202020202020E220202020E220202020E2E220202020E2E22020202020202020202020202020E220202020E0E3E3E3E3E1E0E3E3E3E3E1E0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E1202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202000000000C0F0F03000000000CCFFFF3300000000CCFFFF3300000000CCFFFF33000000000C0F0F03000000000000000000000000000000000000000000000000 7BE0 background graphic (without dragon, with text) 2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020DEE3E3E3E3E3E3E3DFDEE3E3E3E3E3DF20455843414C49425552203220202020E24E414D45203120E2E220204E2020E220202020202020202020202020202020E241474F4E202020E2E220C3C3C320E220594F55204B494C4C45442020202020E24C494645202020E2E257C3C0C345E220202020202020202020202020202020E22031353A203135E2E220C3FEFE20E2204556494C20445241474F4E20202020E2535452454E4720E2E22020532020E220202020202020202020202020202020E220332020202020E2E0E3E3E3E3E3E120425554204845202020202020202020E244455854202020E22031202031202020202020202020202020202020202020E220342020202020E2DB3D574F4F44202052455455524E454420202020202020E245585020202020E22020202020202020202020202020202020202020202020E220302020202020E2FD3D574159202020414E44204341554748542020202020E2474F4C44202020E22020202020202020202020202020202020202020202020E220333020202020E2C33D57414C4C2020594F55522020202020202020202020E24D414749432020E22020202020202020202020202020202020202020202020E220352020202020E2C03D484F54454C204649414E4345452020202020202020E0E3E3E3E3E3E3E3E12020202020202020202020202020202020202020202020DEE3E3E3E3DFDEE3E3E3E3DFDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3DF20202020E220202020E2E220202020E2E220353A2033203520202020202020E220202020E220202020E2E220202020E2E22020202020202020202020202020E220202020E220202020E2E220202020E2E22020202020202020202020202020E220202020E0E3E3E3E3E1E0E3E3E3E3E1E0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E12020202028312E52554E20322E41545441434B20332E54414C4B293F2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 __________________________ Japanese rough translation: 220 ハナセナイ = はなせない = "Can't Do It" 230 テキハ キエタ = てきは きえた = "I Can Do It" 260 テキニ = てきに = "To Come" (come on!) (go!) 260 ノダメージ アタアタ = "No Dameji Atat" = "No Damage Attack" - Damage Dealt 270 ノダメージヲ ウケタ = "No Dameji うけた" = Damage Received 260 テキヲ タオシタ = てきを たおした = "I've beaten you." 510 ガ ナイ = がない = "There Is No" 530 ナニモ ナイ = なにも ない = "Nothing" 540 550 560 ダダタ = だだた = Ellipsis phrase like "Well" (or "Power?") 580 ナニモ ナイ= なにも ない = "Nothing" 590 ガ タリナイ = が たりない = "Not Enough (gold)" 620 ココデ デキナイ = ここ で できない = "I can't do that here" 630 ココデ デキナイ = ここ で できない = "I can't do that here" 640 ダケ カイフク = だけ かいふく = "Only" (Only Kaifu?) Recovery? (Gold?) Original Japanese BASIC code (obfuscating dialogue as decimal) 810 DATA116,140,109,97,117,32,116,160,151,32,96,136,110,98,161,33 820 DATA102,111,120,121,114,117,32,104,140,151,32,96,136,101,130,33 830 DATA130,135,120,32,116,101,120,32,96,102,112,32,121,46,46,46 840 DATA125,103,115,98,117,32,165,134,155,140,151,32,97,136,160,33 850 DATA157,147,96,103,120,32,130,135,117,32,112,101,163,103,116,33 860 DATA5,1,2,5,12,10,1,11 870 DATA15,4,3,4 880 DATA10,5,3,5 890 DATA5,7,4,6 900 DATA4,10,8,8 910 DATA11,11,9,8 920 DATA2,14,12,14 930 DATA3,20,17,18 940 DATA5,21,20,19 950 DATA14,24,20,20 960 DATA0,26,21,21 970 DATA1,28,22,24 980 DATA14,35,23,24 990 DATA13,40,25,28 810 ナンゼメニ ナゾガ アルソウダ! There seems to be a riddle/mystery/secret here! 820 モリノ ナカノ アキチ ハ。。。 Akichi/ A clearing in the forest. 830 ヅャアクノ モソニ キカヅクナ! Don't worry about the dark side! 840 キタノハテニ ケンガ アルカモ! There might be a problem at the end of the trip! 850 ホクトウニ ドラゴンガ イルゾ! There are dragons in Hokuto! __________________________ HACKING AND REPRODUCING THE FAMILY BASIC CODE: Two pages of the original magazine had been scanned, reproducing the Family BASIC code and an introduction which included the intended background layout. I originally converted the image to an OCR text file, which resulted in many errors, which have hopefully been fixed by this revision. I probably should have typed it by hand, as it requires that level of scrutiny. The autotype would not allow for special characters in the text. I replaced the special characters in the minimap with Xes as a temporary measure (to be hacked into the hex later) and translated the Japanese text to English with help from Rani Baker. Minor changes were made to the background layout at first, then major ones, with new player and enemy graphics added, a new font, and a large dragon graphic added to the background. These could be replaced with the generic Family BASIC graphics again if you're a purist. NinTaco has a lot of features to copy/paste, load/save and autotype Family BASIC code, but the results weren't working, possibly due to text format. NesTopia has an autotype feature (hitting F12) which worked a lot better but has no debug features. It has a tape record output, saved once I'd exited the program, as a TP file under "Saves." This is using the Family Basic SAVE"TEST" (or the name of your file) command in Nestopia. I then loaded this into VirtuaNES, renamed as a VTP file, using the Family Basic LOAD command. The Nestopia .tp file format is a headerless unsigned 8-bit PCM wave file with a 32000 Hz sampling rate. (The VirtuaNES format is identical.) You can do an "Import Raw Data" in Audacity (https://i.imgur.com/cHQGg.png) and save it as a wav file. VirtuaNES has a memory viewer but no output for it. However, a VirtuaNES save state can be converted to NES by a program called STTONES. "You need to have a Family Basic V3.0 ROM renamed to FAMIBE_V3.nes and STTONES in the same folder. Then run FAMIBE_V3 in VirtuaNES, load the code, run the code, and BREAK out of the code (using the End key). Then create a save state in VirtuaNES. It creates a FAMIBE_V3.st0 file that you can drop on STTONES." The FAMIBAS_V3.nes ROM I was using doesn't say it has a battery-backed WRAM segment (the part that stores the game). Therefore VirtuaNES doesn't have the 0x2000 extra bytes that STTONES wants: You need to set 0x6 from 01 to 03 first. Alternately, when you've got a Save State, open up your hex editor. There should be program data in the VirtuaNES Save State at about 0A14. Copy all of that data to about 2A14. Some FFs at the beginning will have to become 00s. Now I run STTONES and have a more or less working file, which I used for further hacking. Alternately we can use the Python remake STTONED.PY : Usage: sttoned.py path/to/save_state path/to/family_basic.nes https://gist.github.com/einstein95/f33906cd4ee0c6e1abae0b4141e08ea9 The new or revised background graphic was created in Photoshop and Shiru's NES Screen Tool, and copied into the ROM using YY-CHR. New code was hacked in using a hex editor and/or the FCEUX emulator hex editor.