Skip to content

Major zTalkBox Progress#725

Open
AARJL wants to merge 20 commits intobfbbdecomp:mainfrom
AARJL:main
Open

Major zTalkBox Progress#725
AARJL wants to merge 20 commits intobfbbdecomp:mainfrom
AARJL:main

Conversation

@AARJL
Copy link
Contributor

@AARJL AARJL commented Mar 1, 2026

100% matched all but 13 functions in zTalkBox.cpp
Ensured DWARF local variables were used when possible
Reordered many functions to be aligned with objdiff where possible

Many of the smaller data sections were matched including StringBase and rodata as a whole
Made changes to zTalkBox.h along with some other files that zTalkBox.cpp relied on such as xEnt.h, containers.h, xFont.h, xSnd.h, and zTextBox.h

AARJL and others added 14 commits December 21, 2025 17:46
    All other functions in zTalkBox.cpp have a 100% match
    Made sure all functions use DWARF local variables when possible
Reordered functions in zTalkBox to try to match objdiff, not all are in the correct order but most are
Completed .bss (8f38) with 100% match
Completed .ctors (4) with 100% match
Completed .data (118) with 100% match
Completed .rodata (1c8) with 100% match
Completed .sbss (20) with 100% match
Completed .sbss2 (8) with 100% match
Completed .sdata (10) with 100% match
Completed .sdata2 (20) with 100% match but [.sdata2-0] is still at 85%
.text (3434) is at a 98% match
.text (224) is at a 96% match
.text (1bc) has 4 100% macthes and one 73% match
Remaining functions in zTalkBox.cpp have 100% match
Made sure all functions use DWARF local variables when possible
Reordered functions in zTalkBox to try to match objdiff, not all are in the correct order but most are
Completed .bss (8f38) with 100% match
Completed .ctors (4) with 100% match
Completed .data (118) with 100% match
Completed .rodata (1c8) with 100% match
Completed .sbss (20) with 100% match
Completed .sbss2 (8) with 100% match
Completed .sdata (10) with 100% match
Completed .sdata2 (20) with 100% match but [.sdata2-0] is still at 85%
.text (3434) is at a 98% match
.text (224) is at a 96% match
.text (1bc) has 4 100% macthes and one 73% match
    Modified it to get some matches but caused a small regression
    I will work through the regression after the PR is discuseed
Removed redundant structs from zTalkBox.h causing errors in other files
@github-actions

This comment was marked as outdated.

Copy link
Collaborator

@JoshSanch JoshSanch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lots of progress with this one - left some initial comments while I spend some time reviewing zTalkBox.cpp.

Thanks for the submission!

  Now has a 100% match with fixed_queue<aqua_beam::ring_segment, 31>::iterator::operator+=(int)
  and with fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::iterator::operator+=(int)
Reverted zTalkBox.cpp DWARF to it's original state
@github-actions

This comment was marked as outdated.

@github-actions
Copy link

github-actions bot commented Mar 1, 2026

main/SB/Game/zTalkBox

Section From To Bytes
.bss 99.59% 100.00% +152
.data 6.58% 100.00% +261
.rodata 15.48% 100.00% +385
.sbss 0.00% 100.00% +32
.sbss2 0.00% 100.00% +8
.sdata 0.00% 100.00% +16
.sdata2 42.86% 100.00% +18
📈 .text 22.19% 96.80% +10741
Function From To Bytes
@unnamed@zTalkBox_cpp@::trigger(unsigned int) 78.67% 100.00% +28
@unnamed@zTalkBox_cpp@::flush_triggered() 3.33% 100.00% +116
@unnamed@zTalkBox_cpp@::load_wait_context(@unnamed@zTalkBox_cpp@::wait_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +680
@unnamed@zTalkBox_cpp@::parse_tag_auto_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +224
@unnamed@zTalkBox_cpp@::wait_context::operator=(const @unnamed@zTalkBox_cpp@::wait_context&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::parse_tag_signal(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +328
📈 @unnamed@zTalkBox_cpp@::trigger_signal(const xtextbox::jot&) 0.00% 99.38% +190
@unnamed@zTalkBox_cpp@::load_sound_type(@unnamed@zTalkBox_cpp@::sound_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +176
📈 @unnamed@zTalkBox_cpp@::parse_tag_sound(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 99.47% +819
📈 @unnamed@zTalkBox_cpp@::trigger_sound(const xtextbox::jot&) 0.00% 94.91% +611
@unnamed@zTalkBox_cpp@::parse_tag_allow_quit(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::parse_tag_teleport(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +304
@unnamed@zTalkBox_cpp@::move_player(const xVec3&) 0.00% 100.00% +84
@unnamed@zTalkBox_cpp@::turn_player(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::trigger_teleport(const xtextbox::jot&) 0.00% 100.00% +104
@unnamed@zTalkBox_cpp@::parse_tag_trap(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 99.63% 100.00% +/-0
@unnamed@zTalkBox_cpp@::trigger_trap(const xtextbox::jot&) 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::parse_tag_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +160
@unnamed@zTalkBox_cpp@::trigger_wait(const xtextbox::jot&) 0.00% 100.00% +112
📈 @unnamed@zTalkBox_cpp@::start_audio_effect(ztalkbox&) 0.00% 91.70% +205
📈 @unnamed@zTalkBox_cpp@::stop_audio_effect() 32.14% 87.38% +46
@unnamed@zTalkBox_cpp@::activate(ztalkbox&) 0.00% 100.00% +132
@unnamed@zTalkBox_cpp@::is_wait_jot(const xtextbox::jot&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::layout_contains_streams() 0.00% 100.00% +196
@unnamed@zTalkBox_cpp@::lock_stream() 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::unlock_stream() 0.00% 100.00% +104
📈 @unnamed@zTalkBox_cpp@::refresh_prompts() 0.00% 96.48% +339
@unnamed@zTalkBox_cpp@::update_prompt_status(float) 0.00% 100.00% +156
@unnamed@zTalkBox_cpp@::update_quit_status(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::hide_prompts() 0.00% 100.00% +80
📈 @unnamed@zTalkBox_cpp@::cb_dispatch(xBase*, xBase*, unsigned int, const float*, xBase*) 90.36% 91.70% +5
ztalkbox::set_text(const char*) 0.00% 100.00% +224
ztalkbox::set_text(unsigned int) 0.00% 100.00% +92
ztalkbox::add_text(const char*) 0.00% 100.00% +84
ztalkbox::add_text(unsigned int) 0.00% 100.00% +80
ztalkbox::start_talk(const char*, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +388
ztalkbox::start_talk(unsigned int, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +124
@unnamed@zTalkBox_cpp@::stop() 0.00% 100.00% +192
ztalkbox::show() 47.33% 100.00% +75
ztalkbox::MasterTellSlaves(int) 0.00% 100.00% +156
ztalkbox::MasterLoveSlave(xBase*, int) 0.00% 100.00% +196
ztalkbox::load_settings(xIniFile&) 95.96% 100.00% +4
📈 ztalkbox::init() 0.00% 77.58% +186
@unnamed@zTalkBox_cpp@::stop_state_type::stop_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::wait_state_type::wait_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::next_state_type::next_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::start_state_type::start_state_type() 0.00% 100.00% +64
📈 ztalkbox::update_all(xScene&, float) 0.00% 95.57% +355
@unnamed@zTalkBox_cpp@::pad_pressed() 0.00% 100.00% +56
ztalkbox::render_all() 0.00% 100.00% +160
ztalkbox::reset_all() 0.00% 100.00% +128
📈 @unnamed@zTalkBox_cpp@::start_state_type::start() 0.00% 97.14% +136
📈 @unnamed@zTalkBox_cpp@::next_state_type::start() 0.00% 90.83% +348
@unnamed@zTalkBox_cpp@::trigger_jot(int) 0.00% 100.00% +68
@unnamed@zTalkBox_cpp@::trigger_jot(const xtextbox::jot&) 0.00% 100.00% +76
@unnamed@zTalkBox_cpp@::next_state_type::update(xScene&, float) 0.00% 100.00% +40
@unnamed@zTalkBox_cpp@::wait_state_type::start() 0.00% 100.00% +40
📈 @unnamed@zTalkBox_cpp@::wait_state_type::stop() 0.00% 93.40% +269
@unnamed@zTalkBox_cpp@::wait_state_type::update(xScene&, float) 0.00% 100.00% +556
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::iterator::operator+=(int) 47.18% 100.00% +23
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::push_back() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::empty() const 0.00% 100.00% +24
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::pop_front() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::front() 0.00% 100.00% +48
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::begin() const 0.00% 100.00% +36
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::reset() 0.00% 100.00% +32
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::clear() 0.00% 100.00% +16
sound_queue<4>::pop() 0.00% 100.00% +100
📈 sound_queue<4>::size() const 0.00% 73.12% +23
sound_queue<4>::clear() 0.00% 100.00% +68
sound_queue<4>::playing(int, bool) const 0.00% 100.00% +212
sound_queue<4>::recent(int) const 0.00% 100.00% +32

main/SB/Game/zNPCTypePrawn

Section From To Bytes
.text 40.80% 40.80% +/-0
Function From To Bytes
fixed_queue<aqua_beam::ring_segment, 31>::iterator::operator+=(int) 98.17% 100.00% +/-0

e.stop_wait(mask);
}

S32 cb_dispatch(xBase*, xBase* to, U32 event, const F32* argf, xBase*)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update the numbers in here to align with their en_xEventTags enumeration values, found in xEvent.h.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated this and found the rest of the match, at 100% now!

}
}
}
void ztalkbox::MasterLoveSlave(xBase* slave, S32 starting)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update the cases in here to use the corresponding enumeration values from the en_ZBASETYPE enum in zBase.h.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the case values, committing soon

Comment on lines 97 to 102
void push(U32 id);
void clear();
S32 size() const;
void pop();
bool playing(S32 index, bool streaming) const;
U32 recent(S32 index) const;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The following implementations can be moved into this class so that we can avoid having to declare template functions over and over, and avoid the redundancy of declaring them here and also declaring them with their implementation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved their implementations to withing the class and deleted the declarations. Committing now

AARJL and others added 2 commits March 1, 2026 03:29
    As a bonus, also got a 100% match here
Updated MasterLovesSlaves to use correct Base tags
Updated .xSnd.h and moved sound_queue methods into the template class
Other minor cleanups
@github-actions
Copy link

github-actions bot commented Mar 1, 2026

main/SB/Game/zTalkBox

Section From To Bytes
.bss 99.59% 100.00% +152
.data 6.58% 100.00% +261
.rodata 15.48% 100.00% +385
.sbss 0.00% 100.00% +32
.sbss2 0.00% 100.00% +8
.sdata 0.00% 100.00% +16
.sdata2 42.86% 100.00% +18
📈 .text 22.19% 96.80% +10741
Function From To Bytes
@unnamed@zTalkBox_cpp@::trigger(unsigned int) 78.67% 100.00% +28
@unnamed@zTalkBox_cpp@::flush_triggered() 3.33% 100.00% +116
@unnamed@zTalkBox_cpp@::load_wait_context(@unnamed@zTalkBox_cpp@::wait_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +680
@unnamed@zTalkBox_cpp@::parse_tag_auto_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +224
@unnamed@zTalkBox_cpp@::wait_context::operator=(const @unnamed@zTalkBox_cpp@::wait_context&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::parse_tag_signal(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +328
📈 @unnamed@zTalkBox_cpp@::trigger_signal(const xtextbox::jot&) 0.00% 99.38% +190
@unnamed@zTalkBox_cpp@::load_sound_type(@unnamed@zTalkBox_cpp@::sound_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +176
📈 @unnamed@zTalkBox_cpp@::parse_tag_sound(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 99.47% +819
📈 @unnamed@zTalkBox_cpp@::trigger_sound(const xtextbox::jot&) 0.00% 94.91% +611
@unnamed@zTalkBox_cpp@::parse_tag_allow_quit(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::parse_tag_teleport(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +304
@unnamed@zTalkBox_cpp@::move_player(const xVec3&) 0.00% 100.00% +84
@unnamed@zTalkBox_cpp@::turn_player(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::trigger_teleport(const xtextbox::jot&) 0.00% 100.00% +104
@unnamed@zTalkBox_cpp@::parse_tag_trap(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 99.63% 100.00% +/-0
@unnamed@zTalkBox_cpp@::trigger_trap(const xtextbox::jot&) 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::parse_tag_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +160
@unnamed@zTalkBox_cpp@::trigger_wait(const xtextbox::jot&) 0.00% 100.00% +112
📈 @unnamed@zTalkBox_cpp@::start_audio_effect(ztalkbox&) 0.00% 91.70% +205
📈 @unnamed@zTalkBox_cpp@::stop_audio_effect() 32.14% 87.38% +46
@unnamed@zTalkBox_cpp@::activate(ztalkbox&) 0.00% 100.00% +132
@unnamed@zTalkBox_cpp@::is_wait_jot(const xtextbox::jot&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::layout_contains_streams() 0.00% 100.00% +196
@unnamed@zTalkBox_cpp@::lock_stream() 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::unlock_stream() 0.00% 100.00% +104
📈 @unnamed@zTalkBox_cpp@::refresh_prompts() 0.00% 96.48% +339
@unnamed@zTalkBox_cpp@::update_prompt_status(float) 0.00% 100.00% +156
@unnamed@zTalkBox_cpp@::update_quit_status(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::hide_prompts() 0.00% 100.00% +80
📈 @unnamed@zTalkBox_cpp@::cb_dispatch(xBase*, xBase*, unsigned int, const float*, xBase*) 90.36% 91.70% +5
ztalkbox::set_text(const char*) 0.00% 100.00% +224
ztalkbox::set_text(unsigned int) 0.00% 100.00% +92
ztalkbox::add_text(const char*) 0.00% 100.00% +84
ztalkbox::add_text(unsigned int) 0.00% 100.00% +80
ztalkbox::start_talk(const char*, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +388
ztalkbox::start_talk(unsigned int, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +124
@unnamed@zTalkBox_cpp@::stop() 0.00% 100.00% +192
ztalkbox::show() 47.33% 100.00% +75
ztalkbox::MasterTellSlaves(int) 0.00% 100.00% +156
ztalkbox::MasterLoveSlave(xBase*, int) 0.00% 100.00% +196
ztalkbox::load_settings(xIniFile&) 95.96% 100.00% +4
📈 ztalkbox::init() 0.00% 77.58% +186
@unnamed@zTalkBox_cpp@::stop_state_type::stop_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::wait_state_type::wait_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::next_state_type::next_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::start_state_type::start_state_type() 0.00% 100.00% +64
📈 ztalkbox::update_all(xScene&, float) 0.00% 95.57% +355
@unnamed@zTalkBox_cpp@::pad_pressed() 0.00% 100.00% +56
ztalkbox::render_all() 0.00% 100.00% +160
ztalkbox::reset_all() 0.00% 100.00% +128
📈 @unnamed@zTalkBox_cpp@::start_state_type::start() 0.00% 97.14% +136
📈 @unnamed@zTalkBox_cpp@::next_state_type::start() 0.00% 90.83% +348
@unnamed@zTalkBox_cpp@::trigger_jot(int) 0.00% 100.00% +68
@unnamed@zTalkBox_cpp@::trigger_jot(const xtextbox::jot&) 0.00% 100.00% +76
@unnamed@zTalkBox_cpp@::next_state_type::update(xScene&, float) 0.00% 100.00% +40
@unnamed@zTalkBox_cpp@::wait_state_type::start() 0.00% 100.00% +40
📈 @unnamed@zTalkBox_cpp@::wait_state_type::stop() 0.00% 93.40% +269
@unnamed@zTalkBox_cpp@::wait_state_type::update(xScene&, float) 0.00% 100.00% +556
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::iterator::operator+=(int) 47.18% 100.00% +23
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::push_back() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::empty() const 0.00% 100.00% +24
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::pop_front() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::front() 0.00% 100.00% +48
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::begin() const 0.00% 100.00% +36
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::reset() 0.00% 100.00% +32
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::clear() 0.00% 100.00% +16
sound_queue<4>::pop() 0.00% 100.00% +100
📈 sound_queue<4>::size() const 0.00% 73.12% +23
sound_queue<4>::clear() 0.00% 100.00% +68
sound_queue<4>::playing(int, bool) const 0.00% 100.00% +212
sound_queue<4>::recent(int) const 0.00% 100.00% +32

main/SB/Game/zNPCTypePrawn

Section From To Bytes
.text 40.80% 40.80% +/-0
Function From To Bytes
fixed_queue<aqua_beam::ring_segment, 31>::iterator::operator+=(int) 98.17% 100.00% +/-0

@github-actions
Copy link

github-actions bot commented Mar 1, 2026

main/SB/Game/zTalkBox

Section From To Bytes
.bss 99.59% 100.00% +152
.data 6.58% 100.00% +261
.rodata 15.48% 100.00% +385
.sbss 0.00% 100.00% +32
.sbss2 0.00% 100.00% +8
.sdata 0.00% 100.00% +16
.sdata2 42.86% 100.00% +18
📈 .text 22.19% 96.27% +10665
Function From To Bytes
@unnamed@zTalkBox_cpp@::trigger(unsigned int) 78.67% 100.00% +28
@unnamed@zTalkBox_cpp@::flush_triggered() 3.33% 100.00% +116
@unnamed@zTalkBox_cpp@::load_wait_context(@unnamed@zTalkBox_cpp@::wait_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +680
@unnamed@zTalkBox_cpp@::parse_tag_auto_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +224
@unnamed@zTalkBox_cpp@::wait_context::operator=(const @unnamed@zTalkBox_cpp@::wait_context&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::parse_tag_signal(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +328
📈 @unnamed@zTalkBox_cpp@::trigger_signal(const xtextbox::jot&) 0.00% 99.38% +190
@unnamed@zTalkBox_cpp@::load_sound_type(@unnamed@zTalkBox_cpp@::sound_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +176
📈 @unnamed@zTalkBox_cpp@::parse_tag_sound(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 99.47% +819
📈 @unnamed@zTalkBox_cpp@::trigger_sound(const xtextbox::jot&) 0.00% 94.91% +611
@unnamed@zTalkBox_cpp@::parse_tag_allow_quit(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::parse_tag_teleport(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +304
@unnamed@zTalkBox_cpp@::move_player(const xVec3&) 0.00% 100.00% +84
@unnamed@zTalkBox_cpp@::turn_player(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::trigger_teleport(const xtextbox::jot&) 0.00% 100.00% +104
@unnamed@zTalkBox_cpp@::parse_tag_trap(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 99.63% 100.00% +/-0
@unnamed@zTalkBox_cpp@::trigger_trap(const xtextbox::jot&) 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::parse_tag_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +160
@unnamed@zTalkBox_cpp@::trigger_wait(const xtextbox::jot&) 0.00% 100.00% +112
📈 @unnamed@zTalkBox_cpp@::start_audio_effect(ztalkbox&) 0.00% 91.70% +205
📈 @unnamed@zTalkBox_cpp@::stop_audio_effect() 32.14% 87.38% +46
@unnamed@zTalkBox_cpp@::activate(ztalkbox&) 0.00% 100.00% +132
@unnamed@zTalkBox_cpp@::is_wait_jot(const xtextbox::jot&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::layout_contains_streams() 0.00% 100.00% +196
@unnamed@zTalkBox_cpp@::lock_stream() 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::unlock_stream() 0.00% 100.00% +104
📈 @unnamed@zTalkBox_cpp@::refresh_prompts() 0.00% 96.48% +339
@unnamed@zTalkBox_cpp@::update_prompt_status(float) 0.00% 100.00% +156
@unnamed@zTalkBox_cpp@::update_quit_status(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::hide_prompts() 0.00% 100.00% +80
@unnamed@zTalkBox_cpp@::stop_wait(ztalkbox&, const float*, unsigned long) 0.00% 100.00% +156
@unnamed@zTalkBox_cpp@::cb_dispatch(xBase*, xBase*, unsigned int, const float*, xBase*) 90.36% 100.00% +40
ztalkbox::set_text(const char*) 0.00% 100.00% +224
ztalkbox::set_text(unsigned int) 0.00% 100.00% +92
ztalkbox::add_text(const char*) 0.00% 100.00% +84
ztalkbox::add_text(unsigned int) 0.00% 100.00% +80
ztalkbox::start_talk(const char*, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +388
ztalkbox::start_talk(unsigned int, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +124
@unnamed@zTalkBox_cpp@::stop() 0.00% 100.00% +192
ztalkbox::show() 47.33% 100.00% +75
ztalkbox::MasterTellSlaves(int) 0.00% 100.00% +156
ztalkbox::MasterLoveSlave(xBase*, int) 0.00% 100.00% +196
ztalkbox::load_settings(xIniFile&) 95.96% 100.00% +4
📈 ztalkbox::init() 0.00% 77.58% +186
@unnamed@zTalkBox_cpp@::stop_state_type::stop_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::wait_state_type::wait_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::next_state_type::next_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::start_state_type::start_state_type() 0.00% 100.00% +64
📈 ztalkbox::update_all(xScene&, float) 0.00% 95.57% +355
@unnamed@zTalkBox_cpp@::pad_pressed() 0.00% 100.00% +56
ztalkbox::render_all() 0.00% 100.00% +160
ztalkbox::reset_all() 0.00% 100.00% +128
📈 @unnamed@zTalkBox_cpp@::start_state_type::start() 0.00% 97.14% +136
📈 @unnamed@zTalkBox_cpp@::next_state_type::start() 0.00% 90.83% +348
@unnamed@zTalkBox_cpp@::trigger_jot(int) 0.00% 100.00% +68
@unnamed@zTalkBox_cpp@::trigger_jot(const xtextbox::jot&) 0.00% 100.00% +76
@unnamed@zTalkBox_cpp@::next_state_type::update(xScene&, float) 0.00% 100.00% +40
@unnamed@zTalkBox_cpp@::wait_state_type::start() 0.00% 100.00% +40
📈 @unnamed@zTalkBox_cpp@::wait_state_type::stop() 0.00% 93.40% +269
@unnamed@zTalkBox_cpp@::wait_state_type::update(xScene&, float) 0.00% 100.00% +556
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::iterator::operator+=(int) 47.18% 100.00% +23
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::push_back() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::empty() const 0.00% 100.00% +24
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::pop_front() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::front() 0.00% 100.00% +48
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::begin() const 0.00% 100.00% +36
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::reset() 0.00% 100.00% +32
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::clear() 0.00% 100.00% +16
sound_queue<4>::pop() 0.00% 100.00% +100
sound_queue<4>::clear() 0.00% 100.00% +68

main/SB/Game/zNPCTypePrawn

Section From To Bytes
.text 40.80% 40.80% +/-0
Function From To Bytes
fixed_queue<aqua_beam::ring_segment, 31>::iterator::operator+=(int) 98.17% 100.00% +/-0

I moved it to the front, but it caused ObjDiff to not recongize the functions.
@github-actions
Copy link

github-actions bot commented Mar 1, 2026

main/SB/Game/zTalkBox

Section From To Bytes
.bss 99.59% 100.00% +152
.data 6.58% 100.00% +261
.rodata 15.48% 100.00% +385
.sbss 0.00% 100.00% +32
.sbss2 0.00% 100.00% +8
.sdata 0.00% 100.00% +16
.sdata2 42.86% 100.00% +18
📈 .text 22.19% 98.13% +10932
Function From To Bytes
@unnamed@zTalkBox_cpp@::trigger(unsigned int) 78.67% 100.00% +28
@unnamed@zTalkBox_cpp@::flush_triggered() 3.33% 100.00% +116
@unnamed@zTalkBox_cpp@::load_wait_context(@unnamed@zTalkBox_cpp@::wait_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +680
@unnamed@zTalkBox_cpp@::parse_tag_auto_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +224
@unnamed@zTalkBox_cpp@::wait_context::operator=(const @unnamed@zTalkBox_cpp@::wait_context&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::parse_tag_signal(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +328
📈 @unnamed@zTalkBox_cpp@::trigger_signal(const xtextbox::jot&) 0.00% 99.38% +190
@unnamed@zTalkBox_cpp@::load_sound_type(@unnamed@zTalkBox_cpp@::sound_context&, const xtextbox::tag_entry_list&) 0.00% 100.00% +176
📈 @unnamed@zTalkBox_cpp@::parse_tag_sound(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 99.47% +819
📈 @unnamed@zTalkBox_cpp@::trigger_sound(const xtextbox::jot&) 0.00% 94.91% +611
@unnamed@zTalkBox_cpp@::parse_tag_allow_quit(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::parse_tag_teleport(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +304
@unnamed@zTalkBox_cpp@::move_player(const xVec3&) 0.00% 100.00% +84
@unnamed@zTalkBox_cpp@::turn_player(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::trigger_teleport(const xtextbox::jot&) 0.00% 100.00% +104
@unnamed@zTalkBox_cpp@::parse_tag_trap(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 99.63% 100.00% +/-0
@unnamed@zTalkBox_cpp@::trigger_trap(const xtextbox::jot&) 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::parse_tag_wait(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) 0.00% 100.00% +160
@unnamed@zTalkBox_cpp@::trigger_wait(const xtextbox::jot&) 0.00% 100.00% +112
📈 @unnamed@zTalkBox_cpp@::start_audio_effect(ztalkbox&) 0.00% 91.70% +205
📈 @unnamed@zTalkBox_cpp@::stop_audio_effect() 32.14% 87.38% +46
@unnamed@zTalkBox_cpp@::activate(ztalkbox&) 0.00% 100.00% +132
@unnamed@zTalkBox_cpp@::is_wait_jot(const xtextbox::jot&) 0.00% 100.00% +44
@unnamed@zTalkBox_cpp@::layout_contains_streams() 0.00% 100.00% +196
@unnamed@zTalkBox_cpp@::lock_stream() 0.00% 100.00% +108
@unnamed@zTalkBox_cpp@::unlock_stream() 0.00% 100.00% +104
📈 @unnamed@zTalkBox_cpp@::refresh_prompts() 0.00% 96.48% +339
@unnamed@zTalkBox_cpp@::update_prompt_status(float) 0.00% 100.00% +156
@unnamed@zTalkBox_cpp@::update_quit_status(float) 0.00% 100.00% +92
@unnamed@zTalkBox_cpp@::hide_prompts() 0.00% 100.00% +80
@unnamed@zTalkBox_cpp@::stop_wait(ztalkbox&, const float*, unsigned long) 0.00% 100.00% +156
@unnamed@zTalkBox_cpp@::cb_dispatch(xBase*, xBase*, unsigned int, const float*, xBase*) 90.36% 100.00% +40
ztalkbox::set_text(const char*) 0.00% 100.00% +224
ztalkbox::set_text(unsigned int) 0.00% 100.00% +92
ztalkbox::add_text(const char*) 0.00% 100.00% +84
ztalkbox::add_text(unsigned int) 0.00% 100.00% +80
ztalkbox::start_talk(const char*, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +388
ztalkbox::start_talk(unsigned int, ztalkbox::callback*, zNPCCommon*) 0.00% 100.00% +124
@unnamed@zTalkBox_cpp@::stop() 0.00% 100.00% +192
ztalkbox::show() 47.33% 100.00% +75
ztalkbox::MasterTellSlaves(int) 0.00% 100.00% +156
ztalkbox::MasterLoveSlave(xBase*, int) 0.00% 100.00% +196
ztalkbox::load_settings(xIniFile&) 95.96% 100.00% +4
📈 ztalkbox::init() 0.00% 77.58% +186
@unnamed@zTalkBox_cpp@::stop_state_type::stop_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::wait_state_type::wait_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::next_state_type::next_state_type() 0.00% 100.00% +64
@unnamed@zTalkBox_cpp@::start_state_type::start_state_type() 0.00% 100.00% +64
📈 ztalkbox::update_all(xScene&, float) 0.00% 95.57% +355
@unnamed@zTalkBox_cpp@::pad_pressed() 0.00% 100.00% +56
ztalkbox::render_all() 0.00% 100.00% +160
ztalkbox::reset_all() 0.00% 100.00% +128
📈 @unnamed@zTalkBox_cpp@::start_state_type::start() 0.00% 97.14% +136
📈 @unnamed@zTalkBox_cpp@::next_state_type::start() 0.00% 90.83% +348
@unnamed@zTalkBox_cpp@::trigger_jot(int) 0.00% 100.00% +68
@unnamed@zTalkBox_cpp@::trigger_jot(const xtextbox::jot&) 0.00% 100.00% +76
@unnamed@zTalkBox_cpp@::next_state_type::update(xScene&, float) 0.00% 100.00% +40
@unnamed@zTalkBox_cpp@::wait_state_type::start() 0.00% 100.00% +40
📈 @unnamed@zTalkBox_cpp@::wait_state_type::stop() 0.00% 93.40% +269
@unnamed@zTalkBox_cpp@::wait_state_type::update(xScene&, float) 0.00% 100.00% +556
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::iterator::operator+=(int) 47.18% 100.00% +23
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::push_back() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::empty() const 0.00% 100.00% +24
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::pop_front() 0.00% 100.00% +40
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::front() 0.00% 100.00% +48
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::begin() const 0.00% 100.00% +36
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::reset() 0.00% 100.00% +32
fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::clear() 0.00% 100.00% +16
sound_queue<4>::pop() 0.00% 100.00% +100
📈 sound_queue<4>::size() const 0.00% 73.12% +23
sound_queue<4>::clear() 0.00% 100.00% +68
sound_queue<4>::playing(int, bool) const 0.00% 100.00% +212
sound_queue<4>::recent(int) const 0.00% 100.00% +32

main/SB/Game/zNPCTypePrawn

Section From To Bytes
.text 40.80% 40.80% +/-0
Function From To Bytes
fixed_queue<aqua_beam::ring_segment, 31>::iterator::operator+=(int) 98.17% 100.00% +/-0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants