В этой теме ведётся перевод игры Zelda II: The Adventure of Link. В настоящий момент почти все работы завершены. Требуется тестирование и выявление ошибок и неточностей. Самим тестировать сложно, так как игра очень сложная. Но вообще пугаться не стоит, немного другое управление и посложнее, а в остальном это всё та же Zelda. На русском многое станет понятней. + Рекомендуется перед игрой прочесть официальное руководство к игре, есть на сайте в разделе игр серии. Прошу кто, что найдёт отписываться в теме.
Глянул, ошибок куча. ("боятся огоня" и т.п.). Но то такое, можно поправить...
Я недавно решил отдохнуть от Skyward Sword и сделал для этой игры проект в Круптаре для текста диалогов + есть адреса остального текста + текстовые файлики с кучей инфы (на инглише, см. сообщения ниже), в которых написано, как расширить поле для диалогов, кстати. Даже лого пытался перерисовать, но там тайловая карта для него, и некоторые тайлы повторяются, вроде. Т.е. у меня надпись "приключение ЛИНКА" получилась с "дырками". (Тайлы собирал в CrystalTile2 при помощи tile composition tool).
Если будешь заниматься, могу все дать.
Надо расширить окна для текста попробовать, надо нормальный шрифт сделать (найти место для "лишних" русских букв, и так 14 раз), по-возможности перерисовать лого, для полного счастья. Ну и поиграть во все это... а она и правда адски сложная.
This document is a compilation of all I already know about the ROM Zelda II : The Adventure of Link. Where is the data and what you can do with it. If you know anything else that is not mentioned here, please let me know. And if you find grammatical errors (I'm not a native English speaker), anything that doesn't make sense, or if you simply want to ask me something about this document, let me know as well...
trax [@] bwass [.] org
--------
Most wanted :
- Overworld map width (done) - Overworld shadows (approx. offset known, behavior and number unknown) - Town data (speech spots, doors destinations) - Enemy damage - Music (approx. offset known, coding unknown) - Sounds (offset known, coding unknown) - Link's walking speed on the overworld (slower in swamp) - Link's recoil variables (done) - Enemy AI (many things done) - Town text line skip (done)
--------
Overworld Map
The overworld map is coded from left to right, then down. There are four places on the ROM where you can find such data, which correspond to West Hyrule, Death Mountain, East Hyrule and Maze Island.
These are the offsets for the overworld data, and the number of bytes that are actually used for the region :
Offset (hex) Length (in bytes) West Hyrule 506C - 538C 801 Death Mountain 665C - 68F7 668 (actually much more than that) East Hyrule 9056 - 936F 794 Maze Island A65C - 68F7 668 (actually much more than that)
Every byte in those ranges represent an horizontal strip of 1 to 16 units of a given terrain (forest, grass, town, etc). If a strip must be more than 16 (or 32, 48, etc), then another byte is needed. The higher bits of every byte determine the number of consecutive units of the terrain (0 makes 1 unit, and F makes 16 units), and the lower bits determine the type of terrain. For example :
A strip of 3 forest units The code for forest is 6 The byte is : 26
A strip of 16 mountain units The code for mountain is B The byte is : FB
This is the complete chart for terrain types :
0 : Town 1 : Grotto 2 : Palace 3 : Bridge 4 : Desert 5 : Grass 6 : Forest 7 : Swamp 8 : Graveyard 9 : Road A : Lava B : Mountain C : Water D : Water (walkable) E : Rock F : Spider
--------
Text
Each character is represented by 1 byte, with DA for A, DB for B, and so on. Dialog boxes in towns end with FF, and the following byte is the first character of the next dialog. Use FD for a line break and FE for a line break with delay. Each line should not be more than 10 characters, including spaces. If you omit the FD byte, the text will go on and eventually wrap to the other side of the screen.
This is the chart for character coding :
D0 = 0 D1 = 1 D2 = 2 D3 = 3 D4 = 4 D5 = 5 D6 = 6 D7 = 7 D8 = 8 D9 = 9 DA = A DB = B DC = C DD = D DE = E DF = F E0 = G E1 = H E2 = I E3 = J E4 = K E5 = L E6 = M E7 = N E8 = O E9 = P EA = Q EB = R EC = S ED = T EE = U EF = V F0 = W F1 = X F2 = Y F3 = Z F6 = - CF = . 9C = , 34 = ? 36 = ! CE = / F4 = Space FD = Line break FE = Line break with delay FF = End of dialog
--------
Notes on text drawing
There are 14 graphics banks in Zelda II. Each of these banks (except the last one, which is empty) contain the exact same copy of the text graphic tiles at the same relative offset. But the bank used depends of the region you're in (selection screen, east Hyrule, west Hyrule, towns, palaces). This said, the text appearance can be changed in specific regions.
--------
Dialogs
E390 - EFCD
--------
Pointers for Dialogs
The corresponding pointers for dialogs follow the dialogs data immediately. They are from EFCE to F091. There's a total of 98 dialogs.
--------
Story
The text for the story at the beginning is located between offsets 16942 and 16AF4, inclusively. The coding is the same as any other text, except for 36 (!), and some other characters are not the same since they are taken from a different graphics bank, like the copyright symbol.
--------
Game Over Text
0013 - 001C GAME OVER 0020 - 002E RETURN OF GANON
Continue or Save
1FDE8 - 1FDEF CONTINUE 1FDF3 - 1FDF6 SAVE
Caution message
1FE1A - 1FE20 CAUTION 1FE24 - 1FE85 MESSAGE (ends with FF like dialogs)
--------
Selection Screen
17C2C - 17C36 S E L E C T 17C4E - 17C53 -NAME- 17C57 - 17C5D -LEVEL- 17C8B - 17C9C REGISTER YOUR NAME 17CB2 - 17CC1 ELIMINATION MODE 17CD6 - 17CE9 REGISTER YOUR NAME 17CED - 17CEF END 17D13 - 17D4D ABCDEFGHIJKLMNOPQRSTUVWXYZ-. 17D51 - 17D64 0123456789 17D6C - 17D7D ELIMINATION MODE 17D81 - 17D83 END
--------
End Credits
15290 - 153BC
--------
Dialogs Pane
F403 - F416 Pointers to the type of line (10 lines) F417 - F424 Line for top and bottom F425 - F432 Line for content (where the letters are displayed)
--------
Level Up Pane and Pause Pane
1B6A - 1BB9 Pointers to the type of line 1BBA - 1D5D Line Types (14 bytes per line)
--------
Make Link go through any terrain on the overworld.
Replace 02 at 072E by 00.
--------
Number of lives you start with
Change the value at 1C369 to set the number of lives Link starts with. If you set it to 0, the counter wraps and you end up with 255 lives.
--------
Magic Usage
The number of units of magic needed for every spell and all 8 magic levels. The values are from 0D8B to 0DCA. The first 8 values are for Shield spell, from level 1 to level 8, the next 8 for Jump, etc. To get the in-game values from these data, you must first convert them into decimal, and divide by 2. For example :
Shield Spell Level 1 : 40 In decimal : 64 Divide by 2 : 32 So you need 32 units of magic (two squares) to cast Shield at level 1.
From 1C3A to 1CA6. Each spell is embedded in a few bytes that determines the borders of the Pause Pane.
--------
Experience for Level Up
The amount of experience points needed to level up for Attack, Magic and Life can be found between 1669 and 1698 inclusively. Each value is made of 2 bytes, but those 2 bytes are not contiguous. The low byte is always 24 bytes further than the corresponding high byte. For example, at address 1669, you get the high byte of the experience you need for Attack to go to level 2, and 24 bytes further, at 1681, you get the low byte. This is the complete chart :
Life Level 2 00 32 50 Life Level 3 00 96 150 Life Level 4 01 90 400 Life Level 5 03 20 800 Life Level 6 05 DC 1500 Life Level 7 09 C4 2500 Life Level 8 0F A0 4000 Life Extra Life 23 28 9000
If you input a number that is not a multiple of 10, the nearest high tenth will be displayed, but the exact number of experience will still be needed to level up. Values higher than 9000 are treated as 9000.
--------
Attack Power
Link's attack power has a corresponding value for each level. The 8 values can be found between 1E67D and 1E684. The default values are :
Palettes for Link in Grass, Desert, Swamp, Graveyard
40AE - 40B1 Link (FF 18 36 2A) 40B2 - 40B5 Flame, last block of life/magic, menu items, enemy hit, score 40B6 - 40B9 Red enemies, red jar (FF 0F 16 30) 40BA - 40BD Chandelier, flying sword, blue enemies, blue jar, Link hit
Palettes for Link in Forest and Caves
40BE - 40C1 Link (including Death Mountain) 40C2 - 40C5 Last block of LM, menu items, enemy hit, score, spider's rope 40C6 - 40C9 Red enemies, red jar 40CA - 40CD Flying sword, blue enemies, blue jar, Link hit (FF 0C 2C 30)
40CE - 40D1 ???? (FF 18 36 2A)
--------
10480 - 10483 22 30 12 16 ????
--------
Palettes for Overworld
07F3 - 0802 Code representing one of the 4 palettes starting from 1C46B
1C47B Black for Everything (except Grass). Also for screen between fights. 1C47C Link Outline 1C47D Link Skin 1C47E Link Outfit
1C47F ???? 1C480 ???? 1C481 Right Border Row 1 (?) 1C482 Right Border Row 2 (?)
1C483 Monsters (they become gray no matter the value) 1C484 Monsters Outline 1C485 ???? 1C486 Monsters
--------
Overworld Tile Mapping
Tile mapping on the overworld is always in this order : top-left, bottom-left, top-right, bottom-right. Town, Palace, Forest, Graveyard, Mountain, Rock and Spider are composed of 4 different tiles. The other ones are either composed of 1 tile, repeated 4 times, or 2 tiles, repeated 2 times.
43A9 - 43AA Tile Mapping for destroyed Rock or Forest (1-2) 43AE - 43AF Tile Mapping for destroyed Rock or Forest (3-4)
--------
Battlefields Tile Mapping
442F - 4432 Background for Grotto (with candle?) 4433 - 4436 ???? 4437 - 443A ???? 443B - 443E ???? 443F - 4442 Top of High Cacti for Desert 4443 - 4446 Stem of High Cacti for Desert 4447 - 444A Top of Small Cacti for Desert 444B - 444E Stem of Small Cacti for Desert 444F - 4452 ???? 4453 - 4456 Body of Dead Tree for Swamp / Tree Trunk for Forest 4457 - 445A Top of Dead Tree for Swamp 445B - 445E Bridge Ropes 445F - 4462 Zelda's Head for North Palace 4463 - 4466 Zelda's Body for North Palace 4467 - 446A Red Carpet for North Palace 446B - 446E Volcano Background 446F - 4472 Rock Floor for Grotto/Desert 4473 - 4476 Rock Wall for Grotto/Desert 4477 - 447A Some Sort of Grotto Wall (?) 447B - 447E Ceiling for Grotto 447F - 4482 Left End of Horizontal Dolmen 4483 - 4486 Middle of Horizontal Dolmen 4487 - 448A Right End of Horizontal Dolmen 448B - 448E Top of Vertical Dolmen 448F - 4492 Body of Vertical Dolmen 4493 - 4496 Top of Logs for Lost Woods 4497 - 449A Base of Logs for Lost Woods 449B - 449E Bridge Base
44A7 - 44AA Breaking Bridge 44AB - 44AE ???? 44AF - 44B2 Lava Surface for Grotto 44B3 - 44B6 Single Weed for Grass/Swamp 44B7 - 44BA Double Weed for Grass/Swamp 44BB - 44BE Grass Surface for Grass 44BF - 44C2 Bushes Surface for Forest 44C3 - 44C6 Body of Column for North Palace 44C7 - 44CA Top of Column for North Palace 44CB - 44CE Swamp Surface for Swamp 44CF - 44D2 ???? 44D3 - 44D6 Lava Bottom for Grotto 44D7 - 44DA Above Ground for Desert ? 44DB - 44DE White Bricks for North Palace 44DF - 44E2 Leaves of Trees for Forest 44E3 - 44E6 Hanging Leaves for Forest 44E7 - 44EA ???? 44EB - 44EE Ground for Desert/Grass 44EF - 44F2 Ground for Forest 44F3 - 44F6 Ground for Swamp
538D - 5390 Curtain Part 5391 - 5394 Curtain End 5395 - 5398 Any Cloud - Left End 5399 - 539C Big Cloud - Right End 539D - 53A0 Small Cloud - Right End 53A1 - 53A4 Gravestone 53A5 - 53A8 Cross 53A9 - 53AC Slanted Cross 53AD - 53B0 ???? 53B1 - 53B4 Ground for North Castle 53B5 - 53B8 Destroyable Block
Level Data
4C4C Any Area with Sky (grass, desert, swamp, graveyard) - Parameters 4C4C Controls bushes, logs, etc, on/off (?) (18) 4C4D ? (60) 4C4E Default ceiling and floor heights 0X = grotto ceiling, floor and background 00 - 07 = floor height (00 = no floor) (07 = high floor) 08 - 0F = ceiling height (08 = high ceiling) (0F = low ceiling) 1X = forest bg and ceiling 2X = water or lava 3X = swamp (but no slow down effect) 4X = desert and grass ground 5X = fucked up (grotto ceiling, but strange bg) 6X = brick ceiling and mini brick ground (like North Castle) 7X = grotto (same as 0X ?) 8X = grotto floor and bg, but no ceiling 9X = forest, but no ceiling Etc, but no ceiling 4C4F ? (00)
4C50 - 4C63 Clouds shared by any area with sky
4C64 Forest - Parameters 4C64 Controls bushes, logs, etc, on/off (???) (14) 4C65 ? (48) (bit 8 (80) set = tree stems become rock walls) 4C66 Default ceiling (leaves) and floor height (9A) 4C67 ? (60)
4C68 - 4C77 Tree stems in Forest
4C78 - 4C8B ???? (looks like another set of trees)
4C8C - 4C8F Forest with 50 exp. bag - Parameters 4C90 - 4CA5 Forest with 50 exp. bag - Clouds and tree stem
4CA6 - 4CAD Last part of cave with 2nd Heart Container (12 E0 0E 48) 4CAE - ???? ????
Level Data
4CC5 - 4CFA North Castle 4CFB - 4D16 Generic Desert NW 4D17 - 4D30 Generic Grass NW 4D31 - 4D44 Generic Forest NW 4D45 - 4D66 Generic Swamp NW 4D67 - 4DA8 Generic Graveyard NW 4DA9 - 4DC4 Bridge NW (used for a few places) 4DC5 - 4DDF Heart Container 1 4DE0 - 4E04 Trophy 4E05 - 4E23 Forest with 50 exp. bag and Aches 4E24 - 4E42 Forest with 100 exp. bag and Megmets 4E43 - 4E71 Doll in Moruge / Red Jar in Western Midoro 4E72 - 4E87 Lost Woods 4E88 - 4EB5 Heart Container 2 (Part 1) 4EB6 - 4EDB Cave south of Ruto - North (Part 1 and probably part 2) 4EDC - 4EE7 ??? 4EE8 - 4EFD Water of Life (Part 1) 4EFE - 4F1B Cave with 200 exp. and Megmets (Part 1) 4F1C - 4F37 ??? 4F38 - 4F6B Bubble Path south of Palace 1 4F6C - 4F7E Red Jar near King's Tomb 4F7F - 4FAC Cave to 3rd palace (Part 1) 4FAD - 4FBA Cave south of Ruto (Part 3) 4FBB - 4FD9 Generic Path / Red Jar Eastern Midoro / Doll East of Palace 3 4FDA - 4FEC 200 exp. bag and Megmets (Part 2) 4FED - 4FFF Heart Container 2 (Part 2) 5000 - 502C Magic Container 1 502D - 504E Generic Forest SW 504F - 5058 Fairy east of Saria / Fairy near Palace 2 5059 - 506B ???
102F5 - 1032A Palace 1 Entrance
Object Coding
High Bits : Y Position (0 = highest) Low Bits : X Position (from last object) (from left to right) Byte 1 : offset coordinates from top left starting from last object Byte 2 : type of object 14 = high (in the sky) 74 = low
00 = Gravestone 01 = Cross 02 = Slanted Cross 03 = Log Body 04 = Complete Dolmen 05 = ???? (locked door ?) 06 = Zelda 07 = Zelda 08 = Hole (?) 09 = Long Cloud 0A = Short Cloud 0B = Short Cloud 0C = Short Cloud 0D = Short Cloud 0E = Short Cloud 0F = Crash
Set 0
1x = Crash 2x = Tree Leaves (1 wide, 2 high, extends horizontally) 3x = Tree Leaves (2 wide, 2 high, extends horizontally) 4x = Curtains (2 high) 5x = Tree Leaves (1 high) 6x = Destroyable Blocks (1 high, extends horizontally) 7x = Horizontal Pit (1 high, extends horizontally) 8x = Single Tall Grass 9x = Double Tall Grass Ax = North Palace Carpet (1 high) Bx = North Palace Bricks (1 high) Cx = Strip of Volcano Background (1 high) Dx = Destroyable Blocks (1 wide, extends vertically) Ex = Background Tree Trunk (1 wide, extends vertically) Fx = North Palace Column (1 wide, extends vertically)
0x = Crash 1x = Crash 2x = Lava at Bottom (3 high) 3x = Cactus (extends vertically, up) 4x = Cactus with Stem 5x = Elevator (?) 6x - Fx = Crash
Collectable Objects
00 = Candle 01 = Glove 02 = Raft 03 = Boot 04 = Flute 05 = Cross 06 = Hammer 07 = Magical Key 08 = Key 09 = Doll (in grottos, glitched thing, transforms to Candle when hit) 0A = Exp. Bag 50 Pts 0B = Exp. Bag 100 Pts 0C = Exp. Bag 200 Pts 0D = Exp. Bag 500 Pts 0E = Magic Container 0F = Heart Container 10 = Blue Jar 11 = Red Jar 12 = Doll 13 = Kidnapped Child 14 = Trophy 15 = Medicine
--------
Character Physics
1480 High Jump < Full Speed (lower means jump higher) 1481 High Jump = Full Speed (lower means jump higher) 1482 Normal Jump < Full Speed (lower means jump higher) 1483 Normal Jump = Full Speed (lower means jump higher)
1488 Momentum of Sword Strikes (standing) 1489 Delay Before Leaning Back (after sword strike) 148A Time of Leaning Back 148B Position of Link Before Striking (standing)
00 = Walk Frame 1 01 = Walk Frame 2 02 = Walk Frame 3 03 = Walk Frame 4 (also standing still) 04 = Before Striking (default) 05 = Sword Strike 06 = Ducking 07 = Strike Ducked 08 = Up Stab 09 = Down Stab 0A = Hit Stance 0B = Strange Graphic (?) 0C = Candle in Hand 0D = Candle and Glitchy Tiles 0E = Candle and Glitchy Tiles 0F = Candle and Glitchy Tiles
148C Position of Link Striking 148D Position of Link after Striking 148E Position of Link Leaning Back 148F Position of Link Striking Ducked 1490 Position of Link after Striking Ducked 1491 Position of Link after Striking Ducked (after) (?) 1492 Position of Link after Striking in Mid-Air (?)
--------
Last modification : 08-09-2007 (D-M-Y)
Расширение диалоговых окон:
Change the Dialog Boxes in Zelda II Offsets assume ROM with header
Dialog boxes in Zelda II are drawn using two different types of line. Originally, each box is made of 10 lines of tiles. The pointers for the lines tile mapping are found between 0xF403 and 0xF415:
So 0x07B4 is for the first and last lines, and 0x15B4 for the remaining lines.
These pointers point to these offsets:
0xF417 : CA CB CB CB CB CB CB CB CB CB CB CB CB CA (Line Type 1) 0xF425 : CC F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 CC (Line Type 2)
Since there's no free space before or after the pointer array at 0xF403, we must relocate it and then extend it. The nearest chunk of unused data is located at 0xF830, but I refrain from using this place because my Zelda II Editor uses this chunk to store additional dialog data when it's too long to fit into the original space. The point is, you have to relocate the pointer array to a suitable offset and convert the pointers accordingly.
We will use offset 0xDFE0 to store the new pointer array:
Notice the new array is now 12 pointers long, instead of 10. Next, we must change the bytes used to construct the pointers, so they now point to our new location:
The last thing we have to do is to change the variable used to tell the routine to stop when there are enough lines drawn. Each iteration draws two lines of tiles. Instead of 5 iterations, we want 7. This variable is stored at memory location 0x0525 and is tested at 0xF114:
0xF114 : 05 -> 07
Voil?! If everything is correct, you now have two extra rows in your dialogs boxes. You can extend dialogs so towns people can say more...
Now if we could find a way to make the text draw on each line, instead of skipping one, it would give us a double advantage: more text displayed in less screen space. Extending the boxes horizontally is also an interesting possibility...
If you have any comments or questions, let me know...
A9 08 85 EE ... Sound to play when displaying a dialog box in towns (tuluiit!) A9 08 : Accumulator = 08
08 = sound when displaying a dialog box 09 = falling in a hole (music stops) 0A = demon hit on the overworld 10 = sound of projectile hitting Link's shield
85 EE : Accumulator -> Zero Page EE
--------
0x1264
A9 10 9D 03 03 ... Changed 10 to 0C When Link casts a spell, a part of the decor flashes and changes color, instead of Link. The value changes what is flashing, and the resulting palette
--------
0x1EDA
A9 10 85 EF A0 ... Changed 10 to 66 Sound to play when moving the arrow in the Level Up pane 66 = fairy sound
--------
0x1F61
A9 10 85 EB CA ... Changed 10 to 67 Music to play when leveling up 11 = overworld music
--------
0x2224
A9 12 85 EF AD ... Changed 10 to 12 Sound to play when moving the cursor in pause pane 12 = fairy sound 20 = elevator sound
--------
0x563C
Enemy variables! For Deelers...
60 -> 40 : makes Deelers go down to another height 40 = go down 4 tiles 60 = go down 6 tiles The enemy's initial Y position + 60
56F2: 98 TYA ; A = Y 56F3: D5 66 CMP $66,X 56F5: F0 F3 BEQ $56EA ; if Zero, goto $56EA (60) 56F7: 68 PLA 56F8: 68 PLA
56F9: FE 8405 INC $0584,X ; gravity for projectiles when blocked 56FC: FE 8405 INC $0584,X ; Y+2 each frame
----
565D: 4C 3996 JMP $9639
0x5649 (ROM) A9 FE 9D 84 05 ... FE -> EF : flying rocks move diagonally up
FE = -1 EF = -10
FE 84 05 FE 84 05 A9 04 7D 84 05 EA
--------
Goriya's Boomerangs (All Colors)
0x56B1 88 -> C8 : Boomerangs fall down after reaching max distance
0x56B5 3F -> 44 : Boomerangs max acceleration is much more
0x56B7 20 : Boomerangs max velocity on return (?)
It probably means $66,X is related to X velocity
0x570C FE -> DE : Boomerangs go diagonally up after hitting Link's shield This is also used for Octorok's rocks, but not Molblin's spears (?)
--------
0x1E8E0
Sound of enemy killed (04)
--------
0xF113
Aha! We are in the core of the dialog display routine!
C9 05 : Compare Accumulator to 05
If A >= 05, stop adding new rows and start text display routine Something like that
Decompile - From 0xF0E2 (Real 0xF0D2)
0xF0D2: AD 25 05 LDA $0525 0xF0D5: 0A ASL ; Arithmetic Shift Left (X2) 0xF0D6: A8 TAY 0xF0D7: B9 F3 B3 LDA $B3F3,Y ; pointer to line data (byte 1) 0xF0DA: 85 02 STA $02 ; store A in Zero Page 02 0xF0DC: B9 F4 B3 LDA $B3F4,Y ; pointer to line data (byte 2) 0xF0DF: 85 03 STA $03 ; store A in Zero Page 03 0xF0E1: B9 FD B3 LDA $B3FD,Y ; pointer to line data (byte 1) 0xF0E4: 85 04 STA $04 ; store A in Zero Page 04 0xF0E6: B9 FE B3 LDA $B3FE,Y ; pointer to line data (byte 2) 0xF0E9: 85 05 STA $05 ; store A in Zero Page 05 0xF0EB: A0 0D LDY #$0D ; Y = 0xD (decimal 13)
0xF0ED: B1 02 LDA ($02),Y 0xF0EF: 99 3E 05 STA $053E,Y 0xF0F2: B1 04 LDA ($04),Y 0xF0F4: 99 4C 05 STA $054C,Y 0xF0F7: 88 DEY ; Y - 1 0xF0F8: 10 F3 BPL $F0ED ; if (Y > 0) branch to $F0ED 0xF0FA: 20 0B B1 JSR $B10B ; jump to tile drawing routine ($F10B?)
0xF0FD: EE 25 05 INC $0525 0xF100: AD 25 05 LDA $0525 0xF103: C9 05 CMP #$05 0xF105: 90 03 BCC $F10A ; if (A >= 5) branch to $F10A 0xF107: EE 24 05 INC $0524 0xF10A: 60 RTS ; return to parent routine
0xF24B: AC 62 03 LDY $0362 0xF24E: A9 C0 LDA #$C0 ; A = C0 0xF250: 85 07 STA $07 ; store A in Zero Page 07 0xF252: A9 02 LDA #$02 ; A = 02 0xF254: 85 08 STA $08 ; store A in Zero Page 08 0xF256: A2 00 LDX #$00 ; X = 00 0xF258: AD 2C 07 LDA $072C 0xF25B: 18 CLC 0xF25C: 69 78 ADC #$78 0xF25E: 29 F0 AND #$F0 0xF260: 85 01 STA $01 ; store A in Zero Page 01 0xF262: AD 2A 07 LDA $072A 0xF265: 69 00 ADC #$00 0xF267: 85 00 STA $00 ; store A in Zero Page 00 0xF269: A5 01 LDA $01
--------
0xF667 Delay after dialog line with FD Default : 0B
0xF66D Delay after dialog line with FE Default : 2D
The delay is stored in RAM at $0566
--------
0x1949A 04 -> 08 : Battle music but with slightly different tones
В принципе можно заняться. С круптаром конечно будет намного проще. Шрифт достаточно сделать 1 раз, потом можно скопировать. Ну чтож будем править. В общем получилось на оригинальеом роме, без перевода. Насчёт шрифта. Можно сделать так: Вместо символов "/" и "-" использовать в игре ".", то есть точку. Соответственно 0 это О, 3 это З, 4 это Ч. И того мы имеем 31 символ. Ё и Ъ в принципе можно опустить. (Ъ мне ни разу не понадобился в переводе, хотя я не ставил такой цели) Думаю теперь нужен проект к круптару...
В общем получилось на оригинальеом роме, без перевода.
две строки, получается, добавились? это круто )
Проект вместе с круптаром в аттаче. что нужно: - шрифт (могу нарисовать) (только никак все-таки нельзя задействовать свободное место в роме под это дело? а то я не шарю). - переделать русскую таблицу согласно русскому шрифту. - группа с текстом диалогов 100% должна быть правильная. пойнтеры идут сразу же за текстом. - в остальных группах в проекте: или их вообще убрать, или доделать (сейчас там только адреса текста указаны, и все). Но в тех текстах нет стоп-байта, и соотв. круптар непонятно что показывает. может даже и пойнтеров нет, х.з...
Ну и не касаемо круптара - хотелось бы логотип переделать. попробуй поискать насчет тайловой карты к нему... сама русская картинка тоже в аттаче (в игре показывало нормально, если не считать "дырок" в буквах).
Quote (Ratnik05)
Вместо символов "/" и "-" использовать в игре ".", то есть точку.
Та фигня ж будет. Вот они, во всей красе в интерфейсе, эти "/" и "-" - а представь там точку?
Вот шрифт, Кеншину рисовал недавно для какой-то игры (Лангриссер 2, вроде). Тоже в тайлах 8х8. Можешь взять отсюда буквы. И цифры тоже (они одинаковой высоты с буквами).
Спасибо за участие. Только вот что-то проект к круптару ведёт себя странно, при пересчёте пишет "не хватает столько-то байт", даже если я вообще ничего не заменяю... PS. Вроде это только для Интро не пересчитывает, Ну это и не надо, я его через редактор переведу.
Сообщение отредактировал Ratnik05 - Пятница, 30.11.2012, 11:43
попробуй поубивай все группы, кроме диалогов. они ж скорей всего неправильные. там только адреса текста, и все. "заготовки" проекта, так сказать. ну или доделай, если знаешь, как.
у меня нормально пересчитало диалоги. PS. и в игре показывает нормально после пересчета.
А как ты будешь обзывать по-русски персонажей по имени Error и Bagu?
Вроде всё сделал, шрифт малость модифицировал. Осталось только текст вставлять, ну корректировать его соответственно в связи с увеличившимся местом для него.
Quote (sp0911)
А как ты будешь обзывать по-русски персонажей по имени Error и Bagu?
Что-нибудь можно посмотреть на Лукоморье. "Ашипка, Фича" - Bagu "Глюк" -Error
Незнаю пока может Error - Ошибко. Будет "я Ошибко" А Bagu "Глюко". Ну что-то типа того. Вот думаю как того кто высохший назвать, может, "Жаждун" или ещё как. Варианты приветствуются...
Изначально я так их и оставил транслито Эррор и Баг. Так наверно и оставлю это на сюжет невлияет. Про высохшего, как до компа доберусь скажу и шрифт заодно покажу.
"I AM THIRSTY." - "Я хочу пить". Это местной девушке просто хочется пить. Принеси ей воду, и она пустит тебя в дом, где ее папаша (ну или просто "мудрец в подвале") научит Линка заклинанию огня.
Даже игру проходить не надо... все понятно и из zeldawiki.
Дата: Понедельник, 03.12.2012, 11:28 | Сообщение # 20
Зора
Группа: Пользователи
Сообщений: 271
Статус: Оффлайн
Ну что ж это упрощает дело..
Добавлено (03.12.2012, 11:28) --------------------------------------------- Эх, рано обрадовались увеличению рамки. Он вставляет всё равно ровно столько, сколько было строчек в диалоге, остальное пускает поверх уже написанного. Только в одном пока месте увеличилось количество строк. Я так понял, что в некоторых диалогах жёстко закреплено количество строк, а в некоторых нет, и проверять каждый раз в каком это прокатывает несколько напряжно.... Ещё вопрос. Есть такой персонаж GORIYA OF TANTARI. Это такой вор крыса из пустыни Тантари. Не поню в предыдущих переводах его как-то переводили, или так и писать Гория из Тантари?
Сообщение отредактировал Ratnik05 - Понедельник, 03.12.2012, 12:23
Попарился сегодня с Лого. В общем проблема со словом LINK. Там частенько используется целиковые заштрихованные квадраты. И они находятся явно не в блоке где части основных букв. Без курения поинтеров не обойтись, а в этом я не то, чтобы не силён, можно сказать ноль...
В общем проблема со словом LINK. Там частенько используется целиковые заштрихованные квадраты. И они находятся явно не в блоке где части основных букв.
Так ото ж... И между буквами L и I есть два пустых тайла, где их брать - тоже непонятно. Возможно их вообще нет (там просто прозрачный фон).
Да зделать можно, но только это походу доступно тому, кто хорошо рубит в картах тайлов. По сути можно вообще нарисовать лого в неиспользуемой области и перенаправить тайлы. Кто б только этим занялся..... А пока выкладываю бетку для теста.
Пробовал менять крестик на букву, он много где нужен, ставится перед переменными, / тоже перед переменными ставится... - нужен для переносов, некоторые слова что состоят из 14-15 букв без переноса никак не влезут. Если бы шрифт не использовался на новой локации каждый раз новый (поэтому он там 14 раз), то можно было бы придумать, убрать там символ копирайта, но он только работает в интро. Да даже запятая только в интро работает, в диалогах она не доступна. Как так можно делать игру не представляю... Из-за этих ограничений, даже в английской версии видны косяки, вместо пробелов ставят точку, и сразу новое предложение. А зачастую точки и не ставят, тупо не влазило у них. Поэтому я вижу единственный вариант это 6 использовать как б. Может её как можно подправить что бы получше смотрелась.... Ц я поправил.
Сообщение отредактировал Ratnik05 - Вторник, 04.12.2012, 15:03
После того как расширил рамки, стало вмещаться 11, хотя хз, может и изначально было так. В общем 11 это нормально. Кстати при вставке символа "," (запятая) в диалогах вместо него вылазит что-то не то. Я так понимаю она там вообще не используется.
Сообщение отредактировал Ratnik05 - Среда, 05.12.2012, 19:40
В английском тексте везде 10 символов. Давай, наверное, не будем расширять рамки - я почти весь текст поправил, все впихнул в 10 символов. (мало ли - может, после расширения где-то вылезет какая-то бяка...) Одной-двумя запятыми пришлось пожертвовать, т.к. совсем не влазят. (они нужны, но т.к. она запятая не используется в диалогах... ну ты понял...). Может еще получится перефразировать как-то.
Щас доделаю, пришлю новый проект. Исправил грамматику + несколько смысловых ошибок было.
Не понял пока две вещи: 1. Багу дает тебе именно "письмо" для человека на реке, который не переправляет через нее, если ты не "местный"? Или он просто передает ему привет? 2. Зеркало. Его потеряла какая-то дама. Но есть фраза "ПОД СТОЛОМ Я НАШЕЛ ЗЕРКАЛО." (я перефразировал, но у тебя тоже было "нашел", а не "нашла". Кто его нашел, короче? Ты, или кто-то еще?
И еще: Error = Ошибка. Bagu = Баг. Тут ведь явный стеб... так что я считаю, что можно перевести "в лоб". Если эррор - то значил "ошибка". В любом случае поменять всегда можно, тем более что слово "эррор" короче "ошибки".
В общем проверил, железно везде 11 символов влазит, этим можно не жертвовать. Вместо запятой появляется какой-то таил. Не знаю откуда. Насчёт письма. Я до этого дошёл. Без него мужик на реке не пускает. Подходишь после того как поговорил с Багом, он говорит что-то типа - "О ты от знаешь Бага (или - ты от Бага?), тогда всё норм." Включает разводной мост и можно переходить. Там как бы не письмо написано а записка. Я думаю в этом случае подходит именно письмо, да и логично, как ещё страж может удостовериться, что ты знаком с этим Багом. П.С. Странно. При такой популярности Зельды, переводом кроме нас вообще никто не интересуется. Я понимаю что эта часть малость не похожа на другие, но переводя текст, понимаешь что в принципе отличается только чуток управление, а по сути это всё та же Зельда... ППС. Жду с Китая motion+, как придёт буду тестить твой Скайворд.
Сообщение отредактировал Ratnik05 - Среда, 05.12.2012, 20:45
Странно. При такой популярности Зельды, переводом кроме нас вообще никто не интересуется. Я понимаю что эта часть малость не похожа на другие, но переводя текст, понимаешь что в принципе отличается только чуток управление, а по сути это всё та же Зельда...
все потому, что она реально сложная. в первой же пещере, в начале игры, не могу убить, ***ть, летучую мышь! )
ты уверен, что 11 символов будет везде влазить и до конца игры нигде не будет проблем? рамка-то увеличивались по вертикали. если да, что я бы пересмотрел текст, но уже все исправил для 10 символов.
Quote (Ratnik05)
Жду с Китая motion+, как придёт буду тестить твой Скайворд.
На эмуляторе? Буду завидовать белой завистью, если заработает твой китай. ) Я уже заказывал. Теперь валяется...
м-да... на этой строке зеленым должно было быть"нинтендо". надо сокращать. или как-то это строку пропустить (пробелами забить).
вот так можно. на тринадцатой строке (жирным выделил) как раз получится зеленое "нинтендо", а на 14 и 15 - наша инфа. длины строк не более 27 символов.
В общем вышло так Вроде всё перечитал и ошибок не обнаружил... Если всё норм, то выложу версию для тестирования случайных опечаток, и смыслового соответствия (диалог про зеркало к примеру, я до него так и не дошёл пока)
нормально ) только в "зелда64рус" мягкий знак забыл: "зелЬда64рус". блин, читает как "зельдабчрус", ну да ладно ) в самом тексте в слове "зелду" - тоже мягкий знак вставь... на "зельду".
еще можно заменить "приключение" на "путешествие". отправляются именно в путешествие, в котором уже могут быть приключения.
ты рамки для текста оставил оригинальные или расширенными?
а названия магий/предметов(?) геймоверы и прочее переводил? там все влазит? а то у меня сил нет в это играть... разве что с читом бессмертия, если такой есть...
Всё остальное переведено. Рамки оставил расширенные. По-моему это не мешает игре, как время будет, можно поковыряться и сделать старые рамки. Процесс улучшений перевода ведь никто не отменял Чит бессмертия сам искал, для теста так сказать. Короче пока вот.
Ок. Добавил в шапку последнюю версию. Может кто скачает и потестит. Кстати думаю инфу о переводе можно и на сайт поместить в раздел переводы, что как бы находится в стадии тестировании.
При геймовере вместо "Return of Ganon" можно написать не "Ганон вернулся", а "Ганон вернется!" Ну и "конец" хотелось бы заменить на "игра окончена", но т.к. без серьезного взлома оно вряд ли влезет, то хотя бы на "Проиграл!".
Ок, завтра. Там действительно без серьёзного взлома многое не влазиет, поэтому на предыдущем твоём скрине так выходит.... СОХР и Внимани, заменю на ВНИМАН. с запятой поправлю.
Сообщение отредактировал Ratnik05 - Четверг, 06.12.2012, 15:39