Aslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=262;area=showposts;sa=topics;start=15e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexe2e3-2.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;sa=topics;u=262e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexe2e3-2.html.zxh^ЋOKtext/htmlISO-8859-1gzip8:Tue, 10 Mar 2020 22:44:55 GMT0 0Ph^I Show Posts - Madsiur

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.


Topics - Madsiur

Pages: « 1 2
16
SPC - Hard Core / BRR samples
« on: February 11, 2012, 05:09:28 PM »
I have a somewhat SPC related question but it's more concerning BRR samples.

I started ripping WAV samples from PSX and DS RPGs and I would like to know the best sampling rate by taking in account the size vs quality factor. I changed some FFIV DS samples to 16 bit at 16000Hz. I haven't really noticed too much change in the quality but when I dropped to 8000Hz there was a significant drop of volume and quality. So what would be the best sampling rate for my WAV samples that will be converted into BRR samples after? What is the ideal sampling rate for the SPC-700?

Also, as for GBA sample is the audio quality of the GBA is that bad  that it I shouldn't spend my time on those?  :hmm:

I read somewhere that the quality of the GBA sound is 8 bit at a average sampling rate of 8000Hz...

Thanks

17
Game Modification Station / Unused RAM?
« on: January 28, 2012, 10:23:01 PM »
I got a question for you guys,

Is there any RAM that could be used to store temporary values in FF3us? I'm trying to write a event command that would check if all the characters of the current party are above level X (parameter). My problem is that I'm looping 16 times and make a check on the party of each character to see if they are in the active one. So X holds the character number or in other words the number of times I have looped so far and Y holds the value of the increment to make the check respectively at $0867,Y (current character party?). Later on in the function I want to load the value at $1608 + (character number multiply by #$25) which is the level of the current character in the active party but I don't want to put that value in a variable that could affect other things in the game.

So is there some safe and/or unused places in the RAM I could dump that temporary value or any other value?

Or would there be a way by clever assembly programming to do what I want to do and only use A, X and Y without storing one of the two increments (level and party) related to the character in a variable ? (Don't give me the answer I just want to know if it's possible...)

Thanks in advance

18
Game Modification Station / Party Leader identification
« on: January 17, 2012, 12:07:52 AM »
Hi everyone,

I have a new question. I would like to use an *unused* event command and make a custom command that would make checks on the party leader (of the active party). It could be any characteristic of the Actor starting at $1600. So I could do something like: If party leader level is below 50 (parameter of the command) branch to $CA/0000 + $XX/XXXX (bytes 2, 3, 4 of the parameter). Or I could make a check on a item equipped ($161F to $1622) I haven't deceided yet. Now I found a portion of code in C0 that identify the actor number of the party leader, and this would be the first step of my command.

But from what I understand of the code comes a question: Is this function only good if the leader is in slot 0 or would I get the party leader actor number even if he's in slot #1 and there's no one in slot 0? I don't know if my understanding of the opcodes are good enough but here it is:

Code: [Select]
C0/B4B9: A920    LDA #$20
C0/B4BB: 851A    STA $1A (Store #$20 in $1A)
C0/B4BD: A400    LDY $00 (Load $00 in Y, probably #$00)
C0/B4BF: BB      TYX (Transfer Y to X, probably to zero X)
C0/B4C0: B95018  LDA $1850,Y (Load place of the Actor Y in the parties (value: either E1, E9, F1 or F9 for 1 party))
(E2, EA, F2 or FA for party #2 and E3, EB, F3 or FB for party 3)
C0/B4C3: 2907    AND #$07 (Bitwise #$07 AND  A, the result will always be 1, 2 or 3 (party number of character Y))
C0/B4C5: CD6D1A  CMP $1A6D (compare with active party number)
C0/B4C8: D00D    BNE $B4D7 (Branch if not equal)
C0/B4CA: B95018  LDA $1850,Y (Load place of the Actor Y in the active party)
C0/B4CD: 2918    AND #$18 (A = 0, 8, 16 or 24 dependig in which slot is the character)
C0/B4CF: C51A    CMP $1A (compare A with $1A)
C0/B4D1: B004    BCS $B4D7 (Branch on Carry set so when equals to 0?)
(I'm not sure but this would only happend only if $1A already equals 0
so once $1E would already hold character number in slot 0???)
C0/B4D3: 851A    STA $1A (Store A (the position in party) in $1A)
C0/B4D5: 861E    STX $1E (Store X (character number) to $1E)
C0/B4D7: E8      INX (increment X by 1)
C0/B4D8: C8      INY (Increment Y by 1)
C0/B4D9: C01000  CPY #$0010 (Y - 16)
C0/B4DC: D0E2    BNE $B4C0 (branch if we didn't looped 16 times)
C0/B4DE: C220    REP #$20          (16 bit accum./memory)
C0/B4E0: A51E    LDA $1E (Load $1E (the party Leader actor number in the accumulator) (A number from 0 to 15)


***This part is not really useful for what I want to make***
C0/B4E2: 0A      ASL A (multiply by two the actor number (now a even number from 0 to 30))
C0/B4E3: AA      TAX (Transfer A to X)
C0/B4E4: BFF3B4C0 LDA $C0B4F3,X          (load caseword (2 bytes, binary encoding?))
C0/B4E8: 8DB41E  STA $1EB4 (save CaseWord)
C0/B4EB: 7B      TDC (Transfer D to C, zero A)
C0/B4EC: E220    SEP #$20                           (8 bit accum./memory)
C0/B4EE: A901    LDA #$01
C0/B4F0: 4C5C9B  JMP $9B5C

I think I'm missing something or don't fully understand the part at C0/B4D1...

Thanks in advance!

19
Game Modification Station / Map event triggers
« on: December 10, 2011, 10:13:45 AM »
I would like to be able to create more event trigger or event tiles than FF6LE limit us by moving that data in the ROM. That can be easily done and movin the pointers also but I have a few questions:

1) how does the game recognize which event trigger goes on which map since that data is only 5 bytes long ( X position, y position and 3 bytes for the event offset)? I ask that because if I add a new trigger manually, I suppose I can't just put it at the end of all the others. It must be regrouped with the others triggers who are on the same map... So how does the game recognize or calculate the number of triggers on the same map?

2) my second question is related to the function that loads the pointers and go to the correct event trigger and then loads the correct event. I suspect that function would be in the C0 bank but since my knowledge of that kind of coding is limited I would just like know if I found the correct function where the pointer of a event trigger is loaded:

Code: [Select]
C0/BC6F: A584    LDA $84        (from C0/00D4)
C0/BC71: D05C    BNE $BCCF
C0/BC73: A559    LDA $59
C0/BC75: D058    BNE $BCCF
C0/BC77: AC0308  LDY $0803
C0/BC7A: B96A08  LDA $086A,Y
C0/BC7D: 290F    AND #$0F
C0/BC7F: D04E    BNE $BCCF
C0/BC81: B96908  LDA $0869,Y
C0/BC84: D049    BNE $BCCF
C0/BC86: B96D08  LDA $086D,Y
C0/BC89: 290F    AND #$0F
C0/BC8B: D042    BNE $BCCF
C0/BC8D: B96C08  LDA $086C,Y
C0/BC90: D03D    BNE $BCCF
C0/BC92: A6E5    LDX $E5
C0/BC94: E00000  CPX #$0000
C0/BC97: D036    BNE $BCCF
C0/BC99: A5E7    LDA $E7
C0/BC9B: C9CA    CMP #$CA
C0/BC9D: D030    BNE $BCCF
C0/BC9F: B97C08  LDA $087C,Y
C0/BCA2: 290F    AND #$0F
C0/BCA4: C902    CMP #$02
C0/BCA6: D027    BNE $BCCF
C0/BCA8: C220    REP #$20      (16 bit accum./memory)
C0/BCAA: A582    LDA $82
C0/BCAC: 0A      ASL A
C0/BCAD: AA      TAX
C0/BCAE: BF0200C4 LDA $C40002,X
C0/BCB2: 851E    STA $1E
C0/BCB4: BF0000C4 LDA $C40000,X
C0/BCB8: C51E    CMP $1E
C0/BCBA: F013    BEQ $BCCF
C0/BCBC: AA      TAX
C0/BCBD: BF0000C4 LDA $C40000,X
C0/BCC1: C5AF    CMP $AF
C0/BCC3: F00E    BEQ $BCD3
C0/BCC5: 8A      TXA
C0/BCC6: 18      CLC
C0/BCC7: 690500  ADC #$0005
C0/BCCA: AA      TAX
C0/BCCB: E41E    CPX $1E
C0/BCCD: D0EE    BNE $BCBD
C0/BCCF: 7B      TDC
C0/BCD0: E220    SEP #$20      (8 bit accum./memory)
C0/BCD2: 60      RTS

From what I think I understand, near the end of the function (C0/BCAE) the value of two pointers are compared to each other then if they are equals we branch at $BCCF, if not there is a transfer from A to X and then the value of the pointer loaded from the same place is compared to AF$ and I really don't know what $AF hold as data. Anyway I'm not even sure if I'm looking at the right thing. So a little bit of help in assembly would be appreciated...

I'm not even at south figaro in my hack and I have no more event trigger to use so I really would like to be able to do more event creations...

Thanks in advance

20
Game Modification Station / Monsters graphics relocalization
« on: November 01, 2011, 09:22:06 PM »
Hi everyone,

I've been learning rom hacking in general in the past few weeks. When it comes to changing monster sprites, FF3SE is a great tool. Sadly, there is not much empty space for new monster sprites.

So I decided to move the monsters graphics to the empty F1 bank of a expanded rom. I changed the value of what I think is the starting offset of monsters graphics (at C1/210F, C1/2115 and C1/211B) in what I think is the corresponding subroutine that load a monster graphic. (I might be totally offtrack...)

I have two questions:

1) Do I have to change the location of the Monster 8-High Composition Data and 16-High Composition Data as well or the unused 220 byte (starting at D2B424) would be used if I add more sprites via FF3SE?

I downloaded the source code of FF3SE and changed the value of the variable "offset" in the respective loading and saving functions. I also increased the value of the variable "maxTileNumber" so that way I could have more space for monster sprites in the editor. The code however doesn't compile. I have an error saying some header file is missing (png.h I think).
I sent a email to the creator of the editor but I haven't receive an answer(yet).

2) Have anyone ever tried that process? If so, am I on the right track or am I missing some steps? :hmm:

I've been studying programming since last year but never learned C++ (the language FF3SE is coded in) specifically. As for assembly, I'm learning but I don't know enough to understand every line of the subroutines that loads the monster graphic, mold, composition data, x and y position. Is it a harder process than I think to move the monsters graphics and being able to use FF3SE after that?

I hope someone can help, this site has been a good ressource for answering my questions so far.

Pages: « 1 2