Welcome! Log In Create A New Profile

Advanced

Maintenance Mode

Posted by bushing 
Maintenance Mode
August 03, 2008 03:44PM
I still get a lot of questions about the System Menu's "maintenance mode" -- it's time for some of you to go dig in and answer this question, once and for all!

The Wii menu seems to use "Health" to refer to the "health and safety" (press A) screen at the beginning. If you have the right buttons pressed down there, it will set this flag:
81089259 safe_mode_flag: .space	1

ipl::scene::skHealth::check_safe_mode((void))	   # =============== S U B R O U T I N E =======================================
ipl::scene::skHealth::check_safe_mode((void))	   ipl::scene::skHealth::check_safe_mode((void)):
ipl::scene::skHealth::check_safe_mode((void))						   # CODE XREF:	ipl::scene::skHealth::calcFadein((void))+1Cp
ipl::scene::skHealth::check_safe_mode((void))						   # ipl::scene::skHealth::calcNormal((void))+28p
ipl::scene::skHealth::check_safe_mode((void))	   .set	var_4, -4
ipl::scene::skHealth::check_safe_mode((void))	   .set	arg_4,	4
ipl::scene::skHealth::check_safe_mode((void))			   stwu	   %sp,	-0x10(%sp)
ipl::scene::skHealth::check_safe_mode((void))+4			   mflr	   %r0
ipl::scene::skHealth::check_safe_mode((void))+8			   stw	   %r0,	0x10+arg_4(%sp)
ipl::scene::skHealth::check_safe_mode((void))+C			   stw	   %r31, 0x10+var_4(%sp)
ipl::scene::skHealth::check_safe_mode((void))+10		   mr	   %r31, %r3
ipl::scene::skHealth::check_safe_mode((void))+14		   lbz	   %r0,	0x7C(%r3)
ipl::scene::skHealth::check_safe_mode((void))+18		   cmpwi   %r0,	0
ipl::scene::skHealth::check_safe_mode((void))+1C		   bne	   loc_813B5104
ipl::scene::skHealth::check_safe_mode((void))+20		   bl	   ipl::System::getMasterController((void))
ipl::scene::skHealth::check_safe_mode((void))+24		   lwz	   %r12, 0(%r3)
ipl::scene::skHealth::check_safe_mode((void))+28		   li	   %r4,	0x10
ipl::scene::skHealth::check_safe_mode((void))+2C		   lwz	   %r12, 0x14(%r12)
ipl::scene::skHealth::check_safe_mode((void))+30		   mtctr   %r12
ipl::scene::skHealth::check_safe_mode((void))+34		   bctrl
ipl::scene::skHealth::check_safe_mode((void))+38		   cmpwi   %r3,	0
ipl::scene::skHealth::check_safe_mode((void))+3C		   beq	   loc_813B5194
ipl::scene::skHealth::check_safe_mode((void))+40		   bl	   ipl::System::getMasterController((void))
ipl::scene::skHealth::check_safe_mode((void))+44		   lwz	   %r12, 0(%r3)
ipl::scene::skHealth::check_safe_mode((void))+48		   li	   %r4,	0x1000
ipl::scene::skHealth::check_safe_mode((void))+4C		   lwz	   %r12, 0x14(%r12)
ipl::scene::skHealth::check_safe_mode((void))+50		   mtctr   %r12
ipl::scene::skHealth::check_safe_mode((void))+54		   bctrl
ipl::scene::skHealth::check_safe_mode((void))+58		   cmpwi   %r3,	0
ipl::scene::skHealth::check_safe_mode((void))+5C		   beq	   loc_813B5194
ipl::scene::skHealth::check_safe_mode((void))+60		   bl	   OSGetTick
ipl::scene::skHealth::check_safe_mode((void))+64		   li	   %r0,	1
ipl::scene::skHealth::check_safe_mode((void))+68		   stw	   %r3,	0x78(%r31)
ipl::scene::skHealth::check_safe_mode((void))+6C		   stb	   %r0,	0x7C(%r31)
ipl::scene::skHealth::check_safe_mode((void))+70		   b	   loc_813B5194
ipl::scene::skHealth::check_safe_mode((void))+74   # ---------------------------------------------------------------------------
ipl::scene::skHealth::check_safe_mode((void))+74   loc_813B5104:			   # CODE XREF:	ipl::scene::skHealth::check_safe_mode((void))+1Cj
ipl::scene::skHealth::check_safe_mode((void))+74		   bl	   ipl::System::getMasterController((void))
ipl::scene::skHealth::check_safe_mode((void))+78		   lwz	   %r12, 0(%r3)
ipl::scene::skHealth::check_safe_mode((void))+7C		   li	   %r4,	0x10
ipl::scene::skHealth::check_safe_mode((void))+80		   lwz	   %r12, 0x14(%r12)
ipl::scene::skHealth::check_safe_mode((void))+84		   mtctr   %r12
ipl::scene::skHealth::check_safe_mode((void))+88		   bctrl
ipl::scene::skHealth::check_safe_mode((void))+8C		   cmpwi   %r3,	0
ipl::scene::skHealth::check_safe_mode((void))+90		   beq	   loc_813B5144
ipl::scene::skHealth::check_safe_mode((void))+94		   bl	   ipl::System::getMasterController((void))
ipl::scene::skHealth::check_safe_mode((void))+98		   lwz	   %r12, 0(%r3)
ipl::scene::skHealth::check_safe_mode((void))+9C		   li	   %r4,	0x1000
ipl::scene::skHealth::check_safe_mode((void))+A0		   lwz	   %r12, 0x14(%r12)
ipl::scene::skHealth::check_safe_mode((void))+A4		   mtctr   %r12
ipl::scene::skHealth::check_safe_mode((void))+A8		   bctrl
ipl::scene::skHealth::check_safe_mode((void))+AC		   cmpwi   %r3,	0
ipl::scene::skHealth::check_safe_mode((void))+B0		   bne	   loc_813B5154
ipl::scene::skHealth::check_safe_mode((void))+B4   loc_813B5144:			   # CODE XREF:	ipl::scene::skHealth::check_safe_mode((void))+90j
ipl::scene::skHealth::check_safe_mode((void))+B4		   li	   %r0,	0
ipl::scene::skHealth::check_safe_mode((void))+B8		   stw	   %r0,	0x78(%r31)
ipl::scene::skHealth::check_safe_mode((void))+BC		   stb	   %r0,	0x7C(%r31)
ipl::scene::skHealth::check_safe_mode((void))+C0		   b	   loc_813B5194
ipl::scene::skHealth::check_safe_mode((void))+C4   # ---------------------------------------------------------------------------
ipl::scene::skHealth::check_safe_mode((void))+C4   loc_813B5154:			   # CODE XREF:	ipl::scene::skHealth::check_safe_mode((void))+B0j
ipl::scene::skHealth::check_safe_mode((void))+C4		   bl	   OSGetTick
ipl::scene::skHealth::check_safe_mode((void))+C8		   lis	   %r4,	bus_clock_speed@h
ipl::scene::skHealth::check_safe_mode((void))+CC		   lwz	   %r5,	0x78(%r31)
ipl::scene::skHealth::check_safe_mode((void))+D0		   lwz	   %r4,	bus_clock_speed@l(%r4)
ipl::scene::skHealth::check_safe_mode((void))+D4		   li	   %r0,	0x3E8
ipl::scene::skHealth::check_safe_mode((void))+D8		   subf	   %r5,	%r5, %r3
ipl::scene::skHealth::check_safe_mode((void))+DC		   srwi	   %r3,	%r4, 2
ipl::scene::skHealth::check_safe_mode((void))+E0		   divwu   %r0,	%r3, %r0
ipl::scene::skHealth::check_safe_mode((void))+E4		   divwu   %r0,	%r5, %r0
ipl::scene::skHealth::check_safe_mode((void))+E8		   cmplwi  %r0,	0xBB8
ipl::scene::skHealth::check_safe_mode((void))+EC		   ble	   loc_813B5194
ipl::scene::skHealth::check_safe_mode((void))+F0		   li	   %r0,	1
ipl::scene::skHealth::check_safe_mode((void))+F4		   lis	   %r3,	((RootHeap+0x10000)@h)
ipl::scene::skHealth::check_safe_mode((void))+F8		   stb	   %r0,	0x7D(%r31)
ipl::scene::skHealth::check_safe_mode((void))+FC		   addi	   %r3,	%r3, -0x6FF8 # RootHeap
ipl::scene::skHealth::check_safe_mode((void))+100		   stb	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::skHealth::check_safe_mode((void))+104  loc_813B5194:			   # CODE XREF:	ipl::scene::skHealth::check_safe_mode((void))+3Cj
ipl::scene::skHealth::check_safe_mode((void))+104					   # ipl::scene::skHealth::check_safe_mode((void))+5Cj
ipl::scene::skHealth::check_safe_mode((void))+104					   # ipl::scene::skHealth::check_safe_mode((void))+70j	...
ipl::scene::skHealth::check_safe_mode((void))+104		   lwz	   %r0,	0x10+arg_4(%sp)
ipl::scene::skHealth::check_safe_mode((void))+108		   lwz	   %r31, 0x10+var_4(%sp)
ipl::scene::skHealth::check_safe_mode((void))+10C		   mtlr	   %r0
ipl::scene::skHealth::check_safe_mode((void))+110		   addi	   %sp,	%sp, 0x10
ipl::scene::skHealth::check_safe_mode((void))+114		   blr
ipl::scene::skHealth::check_safe_mode((void))+114  # End of function ipl::scene::skHealth::check_safe_mode((void))


This flag is then checked all over the place in the rest of the binary:
ipl::System::isPostmanResumed((void))+C			   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::nigaoe::Manager::commitHiddenDB((void))+18			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::PlayTimeLog::log((void))+34		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::PlayTimeLog::sendMsgLog((wchar_t const *))+A0		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r29)
ipl::PlayTimeLog::check((_CDBRecord *))+28		     lbz     %r3, ((safe_mode_flag+0x6FF8)@l)(%r5)
ipl::PlayTimeLog::create_new_record((ipl::EventBuffer const *))+24		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r5)
ipl::PlayTimeLog::read_record((_CDBRecord *,ipl::EventBuffer *))+24		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::PlayTimeLog::write_record((_CDBRecord *,ipl::EventBuffer *,uchar *))+24		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r7)
ipl::ResetHandler::update((void))+E4		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::ResetHandler::update((void))+148		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::Send_Pause((void))+8		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::postman::Manager::Send_Pause((void))+30		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::postman::Manager::Send_Start((void))+8		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::postman::Manager::Send_Start((void))+30		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::postman::Manager::update_playlog_((void))+14		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::update_playlog_((void))+3C		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::update_playlog_((void))+6C		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::add_dl_task_((void))+8			 lbz	 %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::add_dl_task_((void))+30			 lbz	 %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::save_mail_now_((void))+8			   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::save_mail_now_((void))+30		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::do_daily_tasks_((void))+8		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::do_daily_tasks_((void))+30		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::manage_dltasklist_for_menu_((void))+14			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::manage_dltasklist_for_menu_((void))+3C			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::manage_dltasklist_for_menu_((void))+68			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::manage_dltasklist_for_menu_((void))+8C			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::receive_immediately_((void))+28			 lbz	 %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::receive_immediately_((void))+50			 lbz	 %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::receive_immediately_((void))+8C			 lbz	 %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::postman::Manager::receive_immediately_((void))+B8			 lbz	 %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::CdbBackup::CdbBackup((void))+48		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::CdbBackup::stt_wait_worker((void))+1C		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_mount_sd((void))+1C			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_check_sd((void))+20			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_check_sd((void))+44			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::CdbBackup::stt_wait_del_msg_fns((void))+2C			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_wait_sd_back_msg((void))+1C			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_wait_sd_back_msg((void))+4C			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::CdbBackup::stt_wait_sd_back_msg((void))+7C			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::CdbBackup::stt_wait_sd_back_msg((void))+D0			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_check_sd_err((void))+20		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_check_prepare_back((void))+20		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_wait_back_msg_fns((void))+2C		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_clean_up_back((void))+1C		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::stt_wait_terminate((void))+1C			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::CdbBackup::error_handling((void))+18		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
cdb_backup_delete_callback+20			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::cdb_backup_delete_task_((void *))+5C		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::cdb_backup_delete_task_((void *))+A0		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl__cdb_backup_move_callback+24		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r5)
ipl::cdb_backup_move_task_((void *))+5C			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::cdb_backup_move_task_((void *))+A0			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::SDVFWorker::thread_main((void *))+190		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::SDVFWorker::thread_main((void *))+1B8		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::SDVFWorker::thread_main((void *))+210		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::SDVFWorker::thread_main((void *))+238		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
www::wiisetting::wiiWriteBack((WWWJSPluginObj *,WWWJSPluginObj *,int,WWWJSPluginValue *,WWWJSPluginValue *))+F8			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
www::wiisetting::wiiWriteBack((WWWJSPluginObj *,WWWJSPluginObj *,int,WWWJSPluginValue *,WWWJSPluginValue *))+13C		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Address::set_err_msg((wchar_t *,ulong,NWC24Err))+74			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::scene::FriendListCache::init((void))+20		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::FriendListCache::fin((void))+18		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::FriendListCache::add((ulong,NWC24FriendInfo	const &))+50		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::FriendListCache::update((ulong,wchar_t const *,ulong long))+60		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::FriendListCache::del((ulong))+20		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r5)
ipl::scene::FriendListCache::swap((ulong,ulong))+8C		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::FriendListCache::isValidId((ulong long const &))+8			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::FriendListCache::sendRegisterMail((ulong))+20		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r5)
ipl::scene::FriendListCache::check((void))+1C			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::FriendListCache::getErrCode(const(void))+8			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::create((void))+B8		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::create((void))+E0		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::create((void))+104		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::calc((void))+B0		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::Board::calc((void))+D8		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::calc((void))+108		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::calc((void))+144		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::calc((void))+16C		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::calc((void))+360		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::destroy((void))+2C			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::destroy((void))+A8			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r27)
ipl::scene::Board::destroy((void))+D8			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::destroy((void))+148			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::destroy((void))+1C4			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::scene::Board::destroy((void))+1F4			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::appendRecord((_CDBRecord *))+34		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::appendRecord((_CDBRecord *))+248		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_wait_cdb_init((void))+70			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_wait_cdb_init((void))+E8			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::Board::stt_wait_cdb_init((void))+110		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_wait_init((void))+54		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r29)
ipl::scene::Board::stt_wait_init((void))+180		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_wait_child_dst((void))+1AC		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_wait_child_dst((void))+1E0		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_normal((void))+2C		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r29)
ipl::scene::Board::stt_normal((void))+78		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_normal((void))+A4		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_normal((void))+EC		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_normal((void))+14C		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_normal((void))+208		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r29)
ipl::scene::Board::stt_normal((void))+29C		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r29)
ipl::scene::Board::stt_normal((void))+2D0		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::stt_normal((void))+2F8		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::count_task_cb_((void *,_CDBRecord *))+6C		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::count_task_((void *))+98		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::read_task_((void *))+118		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::fwd_search_task_cb_((void *,_CDBRecord *))+28		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::fwd_search_task_((void *))+70		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::Board::after_backup((void))+1C		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::Board::after_backup((void))+54		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Board::getFriendInfo(const(NWC24FriendInfo *))+30			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r5)
ipl::scene::Board::reopen_log((void))+20		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::BoardObject::delete_record((void))+C		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::BoardObject::clean((void))+38		    lbz	    %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::BoardSD::update((void))+20			 lbz	 %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::focus_object::stt_opt_delete_task((void))+20		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::focus_object::stt_opt_delete_all_task((void))+20		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::focus_object::init_chanjump((RBRAttachment *))+24			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r5)
ipl::scene::focus_object::setup_chanjump((void))+40		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::focus_object::check_network((void))+E4		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::focus_object::check_network((void))+110		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::focus_object::check_network((void))+13C		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::focus_object::check_network((void))+230		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Button::startPointEvent((char const	*,ipl::controller::Interface *))+3C		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::Button::startLeftEvent((char const *))+34			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::search_task_cb_((void *,_CDBRecord *))+68			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::scene::search_task_((void *))+CC			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r29)
ipl::scene::ChannelSelect::calcChannelModules((void))+2C		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::CsChanSelButtonEventHandler::onEventDerived((ulong,ulong,ipl::controller::Interface	const *))+118		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r29)
ipl::scene::ChannelObj::calcExtModule((EGG::ExpHeap *,bool,bool))+424		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::ChannelObj::calcExtModule((EGG::ExpHeap *,bool,bool))+460		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::ChannelObj::updateNew((void))+1C		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::ChannelObj::setupNew((void))+20		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::ChannelObj::setupNew((void))+48		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::ChannelObj::setupNew((void))+A0		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::ChannelObj::setupNew((void))+DC		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::ChannelTitle::calcFadeout((void))+7C		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r27)
ipl::scene::ChannelTitle::calcFadeout((void))+A4		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::ChannelTitle::calcFadeout((void))+E0		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::ChannelTitle::calcFadeout((void))+108		   lbz	   %r0,	((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::ChannelTitle::loadModule((int,int))+24		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r6)
ipl::scene::ChannelTitle::calcCSWait((void))+118		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::ChannelTitle::calcCSWait((void))+168		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::skHealth::calcFadein((void))+1C		      bl      ipl::scene::skHealth::check_safe_mode((void))
ipl::scene::skHealth::calcNormal((void))+28		      bl      ipl::scene::skHealth::check_safe_mode((void))
ipl::scene::skHealth::calcNormal((void))+60		      bl      ipl::scene::skHealth::finish_safe_mode_check(const(void))
ipl::scene::skHealth::calcFadeout((void))+44		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::skHealth::calcFadeout((void))+C8		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::KitayamaTest::calcNormal((void))+598		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r28)
ipl::scene::KitayamaTest::calcNormal((void))+5C0		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))+24		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))+7C		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))+E8		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))+154		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))+1FC		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))+244		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))+2EC		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToPC((ulong long,wchar_t const *))+24		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::LetterWriter::sendToPC((ulong long,wchar_t const *))+74		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::LetterWriter::sendToPC((ulong long,wchar_t const *))+EC		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::scene::LetterWriter::sendToPC((ulong long,wchar_t const *))+164		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::MailAddressSelect::check_network((void))+C8			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::MailAddressSelect::check_network((void))+F4			  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::MailAddressSelect::check_network((void))+120		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::MailAddressSelect::check_network((void))+1FC		  lbz	  %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Setting::calcNormal((void))+518		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::Setting::calcNormal((void))+600		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::Setting::calcNormal((void))+6E8		     lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r30)
ipl::scene::Setting::calcSafeMode((void))+1C		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::TextWriter::openNWC24((void))+1C		       lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::TextWriter::sendMessageByNWC24((ulong long,wchar_t const *))+24		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r4)
ipl::scene::TextWriter::sendMessageByNWC24((ulong long,wchar_t const *))+90		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::TextWriter::sendMessageByNWC24((ulong long,wchar_t const *))+E8		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::TextWriter::sendMessageByNWC24((ulong long,wchar_t const *))+188		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::TextWriter::sendMessageByNWC24((ulong long,wchar_t const *))+1DC		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r31)
ipl::scene::TextWriter::sendMessageByNWC24((ulong long,wchar_t const *))+238		      lbz     %r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::scene::TextWriter::closeNWC24((void))+8			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r3)
ipl::cs::system::is_dltask_registered((CHANSVm *,CHANSVmObjHdr *,CHANSVmObjHdr *))+2C			lbz	%r0, ((safe_mode_flag+0x6FF8)@l)(%r6)
Anyone want to take a piece of those functions and figure out what they do / why they would be blocked for Maintenance mdoe?
Re: Maintenance Mode
August 03, 2008 11:34PM
Well, the reason things would be blocked would be because they want to keep your settings and messages private, wouldn't they? They could get in huge trouble if something happened, couldn't they? But does it change anything else, besides block stuff? Perhaps in the future Nintendo would change this to actually use it, like a "Recovery Mode" or something...
Re: Maintenance Mode
August 04, 2008 01:01PM
Well, I'm the one that's been going around trumpeting that reason -- and it's probably true. No, it doesn't do anything other than what I've listed above -- but that's a lot of things, and it's hard to see any concrete patterns. Here, I'll start breaking it down:

ipl::System::isPostmanResumed((void))+C - always returns false
ipl::nigaoe::Manager::commitHiddenDB((void))+18 skips RFLiMakeNWC24MsgforExchange,  ipl::nwc24::Manager::setMsgAppId(''HACA'), ipl::nwc24::Manager::commitMsg()

Does not update playtime log, or send a WC24 message to self with today's log:
ipl::PlayTimeLog::log((void))+34
ipl::PlayTimeLog::sendMsgLog((wchar_t const *))+A0	
ipl::PlayTimeLog::check((_CDBRecord *))+28
ipl::PlayTimeLog::create_new_record((ipl::EventBuffer const *))+24	
ipl::PlayTimeLog::read_record((_CDBRecord *,ipl::EventBuffer *))+24	
ipl::PlayTimeLog::write_record((_CDBRecord *,ipl::EventBuffer *,uchar *))+24
ipl::postman::Manager::update_playlog_((void))+6C	doesn't call ipl::PlayTimeLog:Log()

ipl::ResetHandler::update((void))+E4 ?
ipl::ResetHandler::update((void))+148

ipl::postman::Manager::Send_Pause((void))+30 doesn't send pause?
ipl::postman::Manager::Send_Start((void))+30	doesn't send start?
ipl::postman::Manager::add_dl_task_((void))+30		doesn't call ipl::nwc24::manager::addDlTask()
ipl::postman::Manager::save_mail_now_((void))+30	doesn't call ipl::nwc24::manager::saveMailNow()
ipl::postman::Manager::do_daily_tasks_((void))+30	doesn't call ipl::nwc24::manager::saveMailNow()
ipl::postman::Manager::manage_dltasklist_for_menu_((void))+14 doesn't call ipl::nwc24::manager::manageDlTaskListForMenu()
ipl::postman::Manager::receive_immediately_((void))+28		doesn't call ipl::nwc24::manager::receive

Does not touch CDB state:
ipl::CdbBackup::CdbBackup((void))+48	
ipl::CdbBackup::stt_wait_worker((void))+1C	
ipl::CdbBackup::stt_mount_sd((void))+1C	
ipl::CdbBackup::stt_check_sd((void))+20
ipl::CdbBackup::stt_check_sd((void))+44
ipl::CdbBackup::stt_wait_del_msg_fns((void))+2C	
ipl::CdbBackup::stt_wait_sd_back_msg((void))+1C	
ipl::CdbBackup::stt_wait_sd_back_msg((void))+4C	
ipl::CdbBackup::stt_wait_sd_back_msg((void))+7C	
ipl::CdbBackup::stt_wait_sd_back_msg((void))+D0	
ipl::CdbBackup::stt_check_sd_err((void))+20		
ipl::CdbBackup::stt_check_prepare_back((void))+20	
ipl::CdbBackup::stt_wait_back_msg_fns((void))+2C	
ipl::CdbBackup::stt_clean_up_back((void))+1C
ipl::CdbBackup::stt_wait_terminate((void))+1C
ipl::CdbBackup::error_handling((void))+18	
cdb_backup_delete_callback+20		
ipl::cdb_backup_delete_task_((void *))+5C		
ipl::cdb_backup_delete_task_((void *))+A0	
ipl__cdb_backup_move_callback+24		
ipl::cdb_backup_move_task_((void *))+5C	
ipl::cdb_backup_move_task_((void *))+AC
Re: Maintenance Mode
August 05, 2008 04:36AM
Well, perhaps it does do nothing... however, it also might put the wii in a condition to be used by an external tool without interference at Nintendo? Just speculating here...
Re: Maintenance Mode
August 06, 2008 10:44AM
There's no need to speculate here. It's all there in that list.

Many of those are there to prevent use of the Message Board:
ipl::scene::LetterWriter::sendToWii((ulong long,wchar_t	const *))
ipl::scene::LetterWriter::sendToPC((ulong long,wchar_t const *))
ipl::scene::MailAddressSelect::check_network((void))
ipl::scene::TextWriter::openNWC24((void))
ipl::scene::TextWriter::sendMessageByNWC24((ulong long,wchar_t const *))
ipl::scene::TextWriter::closeNWC24((void))
Re: Maintenance Mode
September 10, 2008 03:31AM
Apparently, it does something to the Mario Kart Channel banner: [www.youtube.com]
Re: Maintenance Mode
September 12, 2008 09:14PM
Maintenance mode disables a bunch of WC24 stuff, so it has effects on channels that use WC24. Those banners are scripted using a bytecode VM that Nintendo seems to call CHANS (and that no one has reverse engineered yet), that provides a scripting system (it looks like it might be similar to javascript, at least in its object model) that is used to modify banners at load time and show info obtained via WC24.
Re: Maintenance Mode
October 09, 2008 08:18AM
It's probably there for the user to be able to format the wii I guess... Recent events like big emails causing the console to freeze is just an example for it's legit use.

[gbatemp.net]

It's optional for a technician anyway and why would he be bothered to enter into the maintenance mode if he can boot the wii in the normal mode?

What we have is possibly a limited recovery option for banner bricks (through nintendo's channel updates) and anomalies of wc24.
Re: Maintenance Mode
December 31, 2008 04:17PM
Quote
WiiCrazy
What we have is possibly a limited recovery option for banner bricks

So someone with a banner brick try it. At the H&S banner hold down plus and minus. According to bushing in this blog post, it won't work.



Edited 1 time(s). Last edit at 12/31/2008 04:43PM by Wack0.
Re: Maintenance Mode
December 31, 2008 06:51PM
Quote
Wack0
Quote
WiiCrazy
What we have is possibly a limited recovery option for banner bricks

So someone with a banner brick try it. At the H&S banner hold down plus and minus. According to bushing in this blog post, it won't work.

If you read and quote what I wrote, you can understand it better...

While you are on maintenance mode all wc24 content is disabled... how you can get a brick from wc24 you might say...
One case is the infamous large message receipt from a friend...
It can also be caused by the updated banners of nintendo's official channels (wii shop channel for ex.) , never seen this yet it's there I think for the worst case scenario...

Do not mix these with the banner bricks that caused by installing improper wads...
Re: Maintenance Mode
August 08, 2009 01:24AM
i know what it is im not guessing knew about it before it was invented its the same mode as safe mode for pc

my dad works for nintendo

its completly harmless does fix your message board and other things

theres nothing new in maintenance mode

it can unbrick a semi-bricked wii sorry if im flooding your forum im trying to think of the info i know

it cant unbrick a full-bricked wii
ds has got the maintenance mode aswell but my dad dosnt know how to get into

(Ed: coalesced by bushing)



Edited 1 time(s). Last edit at 08/10/2009 11:00PM by bushing.
Re: Maintenance Mode
August 08, 2009 07:02AM
i dont think maintainence mode is worth it cuz if nintendo searches for the sistem files (like the FS browser homebrew does) they can see everything the wii has so whats the point?!?
Re: Maintenance Mode
August 08, 2009 11:54AM
nintendo dont mind you using it because it was made by them
the mode can unbrick a semi-bricked wii thats why your console has it because they always repairing semi-bricked wiis
its third parties what do the damage



Edited 3 time(s). Last edit at 08/08/2009 12:00PM by ilovehomebrew.
Re: Maintenance Mode
August 10, 2009 11:03PM
Quote
ilovehomebrew
nintendo dont mind you using it because it was made by them
the mode can unbrick a semi-bricked wii thats why your console has it because they always repairing semi-bricked wiis
its third parties what do the damage

I don't care who your dad works for; he either hasn't looked at the code that implements "Maintenance mode", or he hasn't explained it to you very well. We worked it out pretty well above, and it doesn't do what you says it does.
Sorry, only registered users may post in this forum.

Click here to login