Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Geiger

Pages: 1 2 3 [4] 5 6 ... 21
46
A decent project, once the game comes out, could be to make a patch for the new dungeon for the SNES rom.

I just want to point out that copying and distributing content in this manner, even after a mild conversion, is an egregious breach of copyright law.  Under the law, it wouldn't be any different than putting the entire ROM up on the site.

47
Is there anyway to either stop that or change the line break limit?

Actually, no, not in the manner you're thinking.  The Japanese ROM does not have a VWF and has a hard coded character spacing of 0x0C (which is pretty big).  So "MOM: Come on, sleepy" is all it can fit in before the words would run off the side of the screen.  If you've applied some sort of VWF font, Flux does not take it into account.

I remember somewhere saying that you could copy layer 1 and paste on layer 2 and vice verse, but it never seems to work.

Look under explicit paste.

48
Yes.   :shock:

49
You should be safe with the range TF reports, the extra data is just repeating junk from what I can determine.  Just add the packets one right after the other, but leave some extra room after the final one so it doesn't overwrite what's after that section of free space.

Just wanted to confirm this.  I finally got some time to look into the issue.  For reasons too technical to get into right now, the extra "data" is really just junk that you can freely ignore.  The reported range in Flux is correct.

50
It restores 5 MP every round (or perhaps the 5 is the result of some other calculation). For now, I'll label it as MP Restore unless someone else notices any other effects of this byte.

Do the enemies even use MP?  I cannot recall any enemy ever running out, and I've logged a lot of hours.

51
Chrono Trigger Modification / Re: CT Shop Editor
« on: June 02, 2008, 09:26:58 am »
As Flux is currently coded, anything in known freespace that is not something Flux knows how to edit will be overwritten if Flux needs the space for something else.

52
Chrono Trigger Modification / Re: MemCpy2E
« on: June 02, 2008, 09:20:04 am »
In my working copy, its called Color Math.

Here's the current entry in Event Command Long Notes:

Command 2E - multi-mode memory copy

Mode
40: 2E 4c ii nn se dd . c - colors affected, same as ColorAdd command . ii - starting color index . nn - number of colors affected . s - starting intensity . e - ending intensity . dd - duration of change . Color Addition
50: Color Subtraction, same params as 40
80: 2E 8? ps nnnn . p - palette num . s - starting color . nnnn - bytes to copy, immediately after the command (+2) . does different things based on mode . two byte version of 88

53
Chrono Trigger Modification / Re: Byte Math question.
« on: May 02, 2008, 09:41:00 am »
The only two-byte add command available in the commercial release is memory address based.  Both values (the total amount and the amount added) will have to be assigned to addresses in the 7F0200-7F03FF range.

There was a value-to-mem addition command in the BETA, but it was removed (presumably for space considerations).

54
Chrono Trigger Modification / Re: Translate Japanese ROM to English?
« on: April 28, 2008, 09:15:21 am »
The Japanese font system is not variable width, though it should be wide enough for any English character other than the infinity symbol (which doesn't actually have a width value in the English ROM).

I would like to add a VWF patch to the Japanese ROM at a later date, but I'm not sure when that will be added in.

55
I have no clue why they tremble that much almost in any occasion.

I'm not sure exactly what you mean but the PSX lacks a z-buffer (or some other feature.. can't remember for sure).  It causes polygons to waver a bit, and this effect is visible on the original metal.  What makes it even worse is that devs would often code idle animations that heightened this effect.

56
Who cares about enhancements when the emulator is buggy as hell.

I encountered more problems with pSX.  The latest version crashed several times on my computer.  It also cannot read Alcohol disc images like it says it can.  I never was able to get it to play Parasite Eve II, even from the CD drive.  And again, the original metal won't have any bugs either, so I see no reason to bother.

I've never encountered any significant bugs using ePSXe.  While it could be easier to configure, it always runs rock-solid on my computers.  The only thing I really wish it could do is expand the drawing area to widescreen like the N64 emulator I have (playing Ocarina of Time in widescreen is awesome).  Course, a number of the games I play are by Squaresoft, who really liked to use a masking border, so the extra space would probably either be filled with the border, or I'd have a nice black square over the center of the screen with stuff showing inside and out.  :)

the only filter I like when I play a Psx game is interpolation, since Pete OpenGL/Direct3D/DirectX plugins aren't really that much of an improvement

You must not set them up properly because the difference is night and day.  Its like saying Quake doesn't look any better in 1600x1200 than in 320x240.  I also use full screen anti-aliasing, though I am as yet unconvinced of its benefits.  Texture smoothing seems to work well, though its not desirable for all games.

57
The deal breaker for me is that pSX doesn't support higher resolutions.  That awful low-res dithering is why I don't use my real PSX or PS2 anymore.  If I want an experience that is in no way improved over the original, I'll just use the original metal.

58
Chrono Trigger Modification / Re: 6 Letters Available! (Almost Done)
« on: February 28, 2008, 11:08:49 am »
There's more than that going on in the code.

Here's the full loop.

Code: [Select]
$CC/E5F9 A6 80       LDX $80    [$00:0080]   A:0005 X:0000 Y:0000 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0268 VC:107 00 FL:56863
$CC/E5FB BD 80 29    LDA $2980,x[$7E:2981]   A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizcHC:0302 VC:107 00 FL:56863
$CC/E5FE 30 40       BMI $40    [$E640]      A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizcHC:0334 VC:107 00 FL:56863
$CC/E600 29 07       AND #$07                A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizcHC:0352 VC:107 00 FL:56863
$CC/E602 C9 04       CMP #$04                A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizcHC:0370 VC:107 00 FL:56863
$CC/E604 D0 05       BNE $05    [$E60B]      A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizCHC:0388 VC:107 00 FL:56863
$CC/E60B C9 06       CMP #$06                A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizCHC:0412 VC:107 00 FL:56863
$CC/E60D D0 06       BNE $06    [$E615]      A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0430 VC:107 00 FL:56863
$CC/E615 AA          TAX                     A:0005 X:0001 Y:0000 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0454 VC:107 00 FL:56863
$CC/E616 BF 46 F8 CC LDA $CCF846,x[$CC:F84B] A:0005 X:0005 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizcHC:0472 VC:107 00 FL:56863
$CC/E61A AA          TAX                     A:001E X:0005 Y:0000 D:0000 DB:7E S:06E4 P:envMxdizcHC:0508 VC:107 00 FL:56863
$CC/E61B A4 82       LDY $82    [$00:0082]   A:001E X:001E Y:0000 D:0000 DB:7E S:06E4 P:envMxdizcHC:0526 VC:107 00 FL:56863
$CC/E61D BD 23 2C    LDA $2C23,x[$7E:2C41]   A:001E X:001E Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:0560 VC:107 00 FL:56863
$CC/E620 99 03 94    STA $9403,y[$7E:9408]   A:00A0 X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0592 VC:107 00 FL:56863
$CC/E623 BD 24 2C    LDA $2C24,x[$7E:2C42]   A:00A0 X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0624 VC:107 00 FL:56863
$CC/E626 99 04 94    STA $9404,y[$7E:9409]   A:00D2 X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0656 VC:107 00 FL:56863
$CC/E629 BD 25 2C    LDA $2C25,x[$7E:2C43]   A:00D2 X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0688 VC:107 00 FL:56863
$CC/E62C 99 05 94    STA $9405,y[$7E:940A]   A:00C5 X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0720 VC:107 00 FL:56863
$CC/E62F BD 26 2C    LDA $2C26,x[$7E:2C44]   A:00C5 X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0752 VC:107 00 FL:56863
$CC/E632 99 06 94    STA $9406,y[$7E:940B]   A:00BA X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0784 VC:107 00 FL:56863
$CC/E635 BD 27 2C    LDA $2C27,x[$7E:2C45]   A:00BA X:001E Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0816 VC:107 00 FL:56863
$CC/E638 99 07 94    STA $9407,y[$7E:940C]   A:0000 X:001E Y:0005 D:0000 DB:7E S:06E4 P:envMxdiZcHC:0848 VC:107 00 FL:56863
$CC/E63B A6 80       LDX $80    [$00:0080]   A:0000 X:001E Y:0005 D:0000 DB:7E S:06E4 P:envMxdiZcHC:0880 VC:107 00 FL:56863
$CC/E63D FE F5 96    INC $96F5,x[$7E:96F6]   A:0000 X:0001 Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:0914 VC:107 00 FL:56863
$CC/E640 E6 80       INC $80    [$00:0080]   A:0000 X:0001 Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:0960 VC:107 00 FL:56863
$CC/E642 18          CLC                     A:0000 X:0001 Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:1000 VC:107 00 FL:56863
$CC/E643 A5 82       LDA $82    [$00:0082]   A:0000 X:0001 Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:1018 VC:107 00 FL:56863
$CC/E645 69 05       ADC #$05                A:0005 X:0001 Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:1126 VC:107 00 FL:56863
$CC/E647 85 82       STA $82    [$00:0082]   A:000A X:0001 Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:1144 VC:107 00 FL:56863
$CC/E649 C9 0F       CMP #$0F                A:000A X:0001 Y:0005 D:0000 DB:7E S:06E4 P:envMxdizcHC:1170 VC:107 00 FL:56863
$CC/E64B D0 AC       BNE $AC    [$E5F9]      A:000A X:0001 Y:0005 D:0000 DB:7E S:06E4 P:eNvMxdizcHC:1188 VC:107 00 FL:56863

At E602 and E60B, there are special cases for Frog and Magus.

Code: [Select]
$CC/E602 C9 04       CMP #$04                A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0198 VC:108 00 FL:56863
$CC/E604 D0 05       BNE $05    [$E60B]      A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0204 VC:108 00 FL:56863
$CC/E606 8E FF A0    STX $A0FF  [$7E:A0FF]   A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0210 VC:108 00 FL:56863
$CC/E609 80 0A       BRA $0A    [$E615]      A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0216 VC:108 00 FL:56863
$CC/E60B C9 06       CMP #$06                A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0222 VC:108 00 FL:56863
$CC/E60D D0 06       BNE $06    [$E615]      A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0228 VC:108 00 FL:56863
$CC/E60F 8E 15 A1    STX $A115  [$7E:A115]   A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0234 VC:108 00 FL:56863
$CC/E612 EE 17 A1    INC $A117  [$7E:A117]   A:00B1 X:0012 Y:000A D:0000 DB:7E S:06E4 P:eNvMxdizcHC:0240 VC:108 00 FL:56863

E616 grabs the index of where the name is stored in memory (a multiple of 6).  If you guys are still null terminating the strings for a total of 7 characters, these will have to be updated.

E645 moves the storage address by 05.  E64B checks for a total of 0F characters.

I looked ahead a bit in the code, and it looks like after this loop finishes, another loop copies the work from this one into another set of addresses.

What I am trying to point out here is to look at what all of the code is doing, not just the part that comes up first.  Seeing the whole picture can give you a better plan of attack.

Now there are a number of ways this loop could be rewritten, here is one.

Code: [Select]
E61A:E63A - C22069232CAAA58229FF00690394A8A90400547E7E29FF00E2208005EAEAEAEAEA

$CC/E61A C2 20       REP #$20                A:0006 X:0001 Y:0046 D:0000 DB:7E S:06E4 P:envMxdizcHC:1404 VC:025 00 FL:203
$CC/E61C 69 23 2C    ADC #$2C23              A:0006 X:0001 Y:0046 D:0000 DB:7E S:06E4 P:envmxdizcHC:0060 VC:026 00 FL:203
$CC/E61F AA          TAX                     A:2C29 X:0001 Y:0046 D:0000 DB:7E S:06E4 P:envmxdizcHC:0084 VC:026 00 FL:203
$CC/E620 A5 82       LDA $82    [$00:0082]   A:2C29 X:2C29 Y:0046 D:0000 DB:7E S:06E4 P:envmxdizcHC:0102 VC:026 00 FL:203
$CC/E622 29 FF 00    AND #$00FF              A:0000 X:2C29 Y:0046 D:0000 DB:7E S:06E4 P:envmxdiZcHC:0136 VC:026 00 FL:203
$CC/E625 69 03 94    ADC #$9403              A:0000 X:2C29 Y:0046 D:0000 DB:7E S:06E4 P:envmxdiZcHC:0160 VC:026 00 FL:203
$CC/E628 A8          TAY                     A:9403 X:2C29 Y:0046 D:0000 DB:7E S:06E4 P:eNvmxdizcHC:0184 VC:026 00 FL:203
$CC/E629 A9 04 00    LDA #$0004              A:9403 X:2C29 Y:9403 D:0000 DB:7E S:06E4 P:eNvmxdizcHC:0202 VC:026 00 FL:203
$CC/E62C 54 7E 7E    MVN 7E 7E               A:0004 X:2C29 Y:9403 D:0000 DB:7E S:06E4 P:envmxdizcHC:0226 VC:026 00 FL:203
$CC/E62F 29 FF 00    AND #$00FF              A:FFFF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envmxdizcHC:0486 VC:026 00 FL:203
$CC/E632 E2 20       SEP #$20                A:00FF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envmxdizcHC:0510 VC:026 00 FL:203
$CC/E634 80 05       BRA $05    [$E63B]      A:00FF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envMxdizcHC:0534 VC:026 00 FL:203
$CC/E636 EA          NOP                     A:00FF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envMxdizcHC:0546 VC:026 00 FL:203
$CC/E637 EA          NOP                     A:00FF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envMxdizcHC:0552 VC:026 00 FL:203
$CC/E638 EA          NOP                     A:00FF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envMxdizcHC:0558 VC:026 00 FL:203
$CC/E639 EA          NOP                     A:00FF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envMxdizcHC:0564 VC:026 00 FL:203
$CC/E63A EA          NOP                     A:00FF X:2C2E Y:9408 D:0000 DB:7E S:06E4 P:envMxdizcHC:0570 VC:026 00 FL:203

I have already checked, and changing the value at E629 to 0005 (and the loop ending values also) will not be enough to get you 6 letters in battle.  You'll need to figure out the rest from here.

59
Chrono Trigger Modification / Temporal Flux event command organization
« on: February 19, 2008, 05:58:26 pm »
I have never been all that happy with how the commands in Temporal Flux are organized.  Some categories seem too broad and some seem too narrow.  But nothing else comes to mind as a better organization.

There are three levels of organization: Category, Command, and Variant.  Variant is typically unimportant and will be phased out completely at some point in the future.  There are 0xE0 variants (not counting Color Crash and its aliases), 0x61 commands, and 0x21 categories.

They are currently organized as such:

Animation
   Animation
   Animation Limiter
   Reset Animation
Assignment
   Get PC1
   Get Storyline
   Mem-to-Mem (A)
   Result
   Set Storyline
   Value-to-Mem (A)
Battle
   Battle
BitMath
   Bit Math
   Downshift
   Set Bits at 7E0154
ByteMath
   Mem-to-Mem (B)
   Value-to-Mem (B)
ChangeLocation
   Change Location
   Change Location-from-Mem
CheckButton
   Check Button
CheckInventory
   Check Gold
   Check Item
CheckParty
   Check Party
CheckResult
   Check Result
CheckStory
   Check Story
Comparison
   Check Drawn
   Check In Battle
   Mem-to-Mem (C)
   Value-to-Mem (C)
End
   End
Facing
   Face Object
   Get Facing
   Set Facing
   Set Facing-from-Mem
Goto
   Goto
HpMp
   Restore HP / MP
Inventory
   Equip
   Get Item Amount
   Gold
   Item
   Item-from-Mem
MemCpy
   Memory Copy
   Multi-mode 2E
   Multi-mode 88
Mode7
   Draw Geometry
   Mode7 (and special purpose)
ObjectCoords
   Get Object Coordinates
   Set Object Coordinates
   Set Object Coordinates-from-Mem
ObjectFunction
   Activate/Touch
   Call Object Function
   Script Processing
Palette
   Change Palette
Pause
   Pause
Party
   Party Manipulation
Project (Pseudo-commands)
   Comments
Random
   Random Number
SceneManip
   Color Addition
   Copy Tiles
   Darken
   Fade Out Screen
   Script Speed
   Scroll Layers
   Scroll Layers 2F
   Scroll Screen
   Shake Screen
   Wait for ColorAdd End
Sound
   Sound
   Wait for Silence
SpriteCollision
   Sprite Collision
SpriteDrawing
   Drawing Status
   Drawing Status from Mem
   Load Sprite
   Sprite Priority
SpriteMovement
   Controllable
   Explore Mode
   Jump
   Jump 7B
   Move Party
   Move Sprite
   Move Sprite-from-Mem
   Move Toward Coordinates
   Move Toward Object
   Object Follow
   Object Movement Properties
   Party Follow
   Destination
   Vector Move
   Vector Move-from-Mem
   Set Speed
   Set Speed-from-Mem
Text
   Load Ascii Text
   Special Dialog
   String Index
   Textbox
Unknown
   Color Crash
   Unknown 2C


What do you people think?  How should this stuff be organized?  I'm not keen on adding another layer of organization, but I suppose that is also an option, if necessary.

60
They are compressed, but not RLE compressed.  There is an archive on my website that has source code routines for Chrono Trigger's compression and decompression.

Pages: 1 2 3 [4] 5 6 ... 21