Users browsing this thread: 2 Guest(s)
Patch: Reward Display

#1
Posts: 149
Threads: 21
Thanks Received: 40
Thanks Given: 3
Joined: Dec 2013
Reputation: 9
Status
Auto-life
Patch:  Reward Display 1.0
Target: Final Fantasy 3, Version 1.0, English, With Header
Download


Description:

The Colosseum system is based on a duel between a opponent and a character. To participate in the duel, a bet item must be selected in the item screen. The selected item will determinate the opponent and the reward item for the duel.

Unfortunately, the item window in the Colosseum doesn't display the reward item before the bet item is selected. After the bet item is selected, the reward item is displayed. However, without prior knowledge of the reward item, it can be a undesired reward for the bet item. The selection can't be undone and the player are forced to participate in the duel.

The patch changes the item display in the Colosseum window. It now displays two columns. The left column is the reward items and the right column is the bet items. It allows to know in advance the reward item for the selected item.

Code:
;-------------------------------------------------------------------------------
;reward display 1.0
;
;display reward items in Colosseum item screen
;-------------------------------------------------------------------------------

header
hirom

;-------------------------------------------------------------------------------
;main link
;-------------------------------------------------------------------------------
org     $C37FD0
    JMP selection       ;select text to display
warnpc  $C37FD3

;-------------------------------------------------------------------------------
;selection
;
;select between normal text display or new Colosseum setup display
;-------------------------------------------------------------------------------
org     $C3F800         ;(*) change for any free space
print   "seg start: ", pc

selection:

    ;check system event
    LDA $26             ;system event
    CMP #$71            ;to init colloseum screen (item selection)
    BEQ bet_display
    CMP #$72            ;to mantain colosseum screen (item selection)
    BEQ bet_display

    ;old code for no-Colosseum events
    JSR $80B9           ;build string for item name
    JSR $7FD9           ;display text. (Y=location in rom)
    JMP $7FE6           ;display item type

;-------------------------------------------------------------------------------
;bet display
;
;setup and display formated strings for the new Colosseum setup 
;-------------------------------------------------------------------------------
bet_display:

    JSR display_setup
    JSR display_reward
    JSR display_delimiter
    JSR display_item
    RTS

;-------------------------------------------------------------------------------
;transfer start
;
;init transfer of string
;-------------------------------------------------------------------------------
transfer_start:

    ;setup transfer
    LDX #$9E8B
    STX $2181

    ;exit
    RTS

;-------------------------------------------------------------------------------
;transfer advance
;
;advance position onscreen for string based on X value
;-------------------------------------------------------------------------------
transfer_advance:

    ;advance position
    REP #$20            ;set C
    TXA                 ;get position to advance
    CLC
    ADC $7E9E89         ;sum with existing one
    STA $7E9E89         ;save position
    SEP #$20            ;set A

    ;exit
    RTS

;-------------------------------------------------------------------------------
;display setup
;
;setup variables for Colosseum
;-------------------------------------------------------------------------------
display_setup:

    ;discovery item ID in window
    TDC
    LDA $E5             ;index in window
    TAY
    LDA $1869,Y         ;item in window index

    ;calculate variables
    STA $0205           ;save item to bet
    JSR $B22C           ;setup Colosseum variables

    ;exit
    RTS

;-------------------------------------------------------------------------------
;display reward
;
;create and display string for reward item
;-------------------------------------------------------------------------------
display_reward:

    ;setup transfer
    JSR transfer_start

    ;check bet item
    LDA $0205           ;item to bet
    CMP #$FF            ;empty item
    BNE .set_reward     ;set default reward if item is valid

    ;set empty reward item for invalid item
    LDA #$FF            ;empty
    BRA .skip

    ;set default reward item
    .set_reward
    LDA $0207           ;reward item
    .skip

    ;display item
    JSR $C068           ;setup string as the item name
    JSR $7FD9           ;display item

    ;advance position
    LDX #$001A
    JSR transfer_advance

    ;exit
    RTS

;-------------------------------------------------------------------------------
;display delimiter
;
;display character delimiter between reward and bet items
;-------------------------------------------------------------------------------
display_delimiter:

    ;setup transfer
    JSR transfer_start

    ;setup delimiter
    LDA #$C1            ;':' character
    STA $2180
    STZ $2180           ;end of string

    ;display string
    JSR $7FD9

    ;advance position
    LDX #$0002
    JSR transfer_advance

    ;exit
    RTS

;-------------------------------------------------------------------------------
;display_item
;
;display bet item
;-------------------------------------------------------------------------------
display_item:

    ;setup transfer
    JSR transfer_start

    ;get discovery item ID in window
    LDA $0205           ;item to bet

    ;display string
    JSR $C068           ;setup string as the item name
    JSR $7FD9           ;display string

    ;advance position
    LDX #$001A
    JSR transfer_advance

    ;exit
    RTS

print   "seg end  : ", pc
  Find
Quote  
[-] The following 2 users say Thank You to HatZen08 for this post:
  • CVReynolds (04-23-2022), Gi Nattak (01-15-2016)

#2
Posts: 53
Threads: 0
Thanks Received: 3
Thanks Given: 0
Joined: Nov 2014
Reputation: 0
Status
None
was hoping to see a screen shot, but since not one, i decided to test it out, very interesting patch. no trial and error on finding betting items

though... all "blank/empty" spots say empty, could you not default them to just be blank, rather than all say empty?
  Find
Quote  

#3
Posts: 1,633
Threads: 56
Thanks Received: 13
Thanks Given: 84
Joined: Apr 2014
Reputation: 12
Status
Atma
Yeah, it's a nice patch, what i don't like is that ???????? prizes are not hidden anymore...
your items should be in the left column in order of being more readable, does the rom denies you to do that, for some reason?


THE GREATEST CHALLENGE OF ALL TIMES AWAITS:
http://www.ff6hacking.com/forums/showthr...p?tid=2593
DO YOU HAVE WHAT IT TAKES TO SLAY A GOD?
------------------------------------------------------------------------
Tenkarider's project #2 is started: FF6 Curse of the Madsiur Joke (CotMJ)
http://www.ff6hacking.com/forums/showthr...p?tid=2755
What happens when Madsiur tweaks your account? This full game hack will show that!
  Find
Quote  

#4
Posts: 826
Threads: 11
Thanks Received: 22
Thanks Given: 13
Joined: Nov 2011
Reputation: 16
Status
Double
This is extremely useful. Having to select each Item to check what it bets for is very irritating.


Confused Moogles FTW
Quote  

#5
Posts: 149
Threads: 21
Thanks Received: 40
Thanks Given: 3
Joined: Dec 2013
Reputation: 9
Status
Auto-life
Quote:though... all "blank/empty" spots say empty, could you not default them to just be blank, rather than all say empty?

I recycled the function, used by shops, to format the item strings. For the empty item, it doesn't format the string as a full sequence of spaces. Instead, it formats the string as the 'empty' string.

I had my own misadventures with this hack and, at the time, I didn't consider it to be of importance. Now that the hack is functional, i can think about it. I will try to implement your suggestion in the next hack update.

Quote:Yeah, it's a nice patch, what i don't like is that ???????? prizes are not hidden anymore...

Can I ask you why? For the original game, there are public documents of the Colosseum. They display all bet items, enemies and the reward items. They don't hide the masked items in their documentation. Why should this patch hide the masked items if all documentation in the web don't do it? You will know the reward items anyway after you win the first time, it only will not be displayed in the item screen...

Quote:your items should be in the left column in order of being more readable, does the rom denies you to do that, for some reason?

It is a question of personal preference. In the screen after the item selection, where you select a character for the opponent, the reward item is on the left and the bet item is on the right. It is the main reason i choose the order of the items for display.

Technically, there is not significant difference to put the reward item in the right or left positions. In the next update, i will do an alternative patch with the reward items in the right and the bet items on the left. I probably only need to change the order where the correspondent JSRs are called.
  Find
Quote  

#6
Posts: 2,548
Threads: 98
Thanks Received: 147
Thanks Given: 156
Joined: Aug 2009
Reputation: 52
Status
Nattak\'d
This is a great patch! It seems to not like my relocated item descriptions though, they are all showing incorrect on this new screen. Or, maybe it's that I swapped a bunch of items around? Is there something in the asm that can be re-pointed or am I out of luck?


We are born, live, die and then do the same thing over again.
Quote  

#7
Posts: 1,633
Threads: 56
Thanks Received: 13
Thanks Given: 84
Joined: Apr 2014
Reputation: 12
Status
Atma
Quote:Can I ask you why? For the original game, there are public documents of the Colosseum. They display all bet items, enemies and the reward items. They don't hide the masked items in their documentation. Why should this patch hide the masked items if all documentation in the web don't do it? You will know the reward items anyway after you win the first time, it only will not be displayed in the item screen...

There's a big difference between discover it while playing and searching all the info opening docs or something, of course your question makes me think that your patch is mainly intended to improve vanilla experience... yet in the case of an hack you might want to hide the prize until the player manage to win.


THE GREATEST CHALLENGE OF ALL TIMES AWAITS:
http://www.ff6hacking.com/forums/showthr...p?tid=2593
DO YOU HAVE WHAT IT TAKES TO SLAY A GOD?
------------------------------------------------------------------------
Tenkarider's project #2 is started: FF6 Curse of the Madsiur Joke (CotMJ)
http://www.ff6hacking.com/forums/showthr...p?tid=2755
What happens when Madsiur tweaks your account? This full game hack will show that!
  Find
Quote  

#8
Posts: 149
Threads: 21
Thanks Received: 40
Thanks Given: 3
Joined: Dec 2013
Reputation: 9
Status
Auto-life
Quote:This is a great patch! It seems to not like my relocated item descriptions though, they are all showing incorrect on this new screen. Or, maybe it's that I swapped a bunch of items around? Is there something in the asm that can be re-pointed or am I out of luck?

It is difficult to give you an answer without prior knowledge of your hack. First, this patch, for this version 1.0, uses the free space from C3/F800 to C3/F88A. You should check if another patches use that space. In the vanilla rom, they should all be filled with #$FF values.

If you need to relocate the free space, you can recompile the code with asar. Find the following code in the asm file:
Code:
org     $C3F800         ;(*) change for any free space
print   "seg start: ", pc
Change $C3F800 to any free space in the rom and recompile it with asar. If everything is fine, it should print the addresses used in the free space.

Quote:There's a big difference between discover it while playing and searching all the info opening docs or something, of course your question makes me think that your patch is mainly intended to improve vanilla experience... yet in the case of an hack you might want to hide the prize until the player manage to win.

I personally don't like to hide the reward items from the player, but it is a valid point. The original game also have the design of masked items as well. I will try to add it in the future update of this hack. Hackers can edit the Colosseum data and determinate what items will or will not be masked. Everyone can be happy.

Ok, I updated the hack. The new version 1.1 is here:

http://www.bwass.org/bucket/025_reward_display_11.7z

Change log
  • When the line is empty without an available item, a full blank line will be displayed. In the old version, the string 'empty' was displayed for the reward and the bet items.
  • Hidden reward items will now display as a string composed of '?' characters. In the old version, they were displayed as any normal item. Hackers can change the colosseum data to determinate the items masks.
  • The bet items are in the left column and the reward items are in the right column. In the old version, it was the opposite positions. I believe now that it is better than the old position.

I will not upload an alternative patch with the reward items in the left because i believe now that it is not a good design. However, if someone is interested, they only need to swap the two correspondent JSR in the asm files and recompile it with asar.

Screen Shots
[Image: 025_reward_display_s00.png][Image: 025_reward_display_s01.png]
  Find
Quote  
[-] The following 2 users say Thank You to HatZen08 for this post:
  • ReturnerScum (01-18-2016), Tenkarider (01-16-2016)

#9
Posts: 1,633
Threads: 56
Thanks Received: 13
Thanks Given: 84
Joined: Apr 2014
Reputation: 12
Status
Atma
Great job!  Wink

I wonder how do you know all those locations in C3 bank... i mean, in C3 bank disassembly there's not very much commentary, even tracking down the offset of hex code you changed i don't see a line of comment.
Is it possible that there's an updated version of that disassembly? the file i own is named "FF6_Bank_C3_Disassembly_V3"


THE GREATEST CHALLENGE OF ALL TIMES AWAITS:
http://www.ff6hacking.com/forums/showthr...p?tid=2593
DO YOU HAVE WHAT IT TAKES TO SLAY A GOD?
------------------------------------------------------------------------
Tenkarider's project #2 is started: FF6 Curse of the Madsiur Joke (CotMJ)
http://www.ff6hacking.com/forums/showthr...p?tid=2755
What happens when Madsiur tweaks your account? This full game hack will show that!
  Find
Quote  

#10
Posts: 3,966
Threads: 279
Thanks Received: 233
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(01-16-2016, 09:29 AM)Tenkarider Wrote: I wonder how do you know all those locations in C3 bank... i mean, in C3 bank disassembly there's not very much commentary, even tracking down the offset of hex code you changed i don't see a line of comment.

Once you know which function does what and the roles of your task relevant registers things get clearer. On a side note there's a complete spanish C3 disassembly with more comments on RHDN.

(01-16-2016, 09:29 AM)Tenkarider Wrote: Is it possible that there's an updated version of that disassembly? the file i own is named "FF6_Bank_C3_Disassembly_V3"

This is a generic file name I gave to a version of the disassembly which I added notes for different things I was doing. Check with a text fire comparer to see the changes. I can tell you in advance they are not really big.
  Find
Quote  



Forum Jump:

Users browsing this thread: 2 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite