ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.48k stars 802 forks source link

Gadget Golf: XML Error #11966

Closed p0008874 closed 1 year ago

p0008874 commented 1 year ago

Describe the bug

image

2023-07-09T05:06:32.443696Z  INFO ruffle_core::player: Loaded SWF version 9, resolution 750x500 @ 30 FPS
2023-07-09T05:06:32.463554Z  INFO run_frame:run_all_phases_avm2: avm_trace: phf_spl_spr_gadgetgolf()
2023-07-09T05:06:32.463895Z  WARN run_frame:run_all_phases_avm2: ruffle_core::stub: Encountered stub: AVM2 flash.utils.Dictionary constructor with weak keys
2023-07-09T05:06:32.464245Z  INFO run_frame:run_all_phases_avm2: ruffle_core::focus_tracker: Focus is now on Some(Stage(Stage { ptr: 0x1fe9c9b40d8 }))
2023-07-09T05:06:32.465230Z  INFO run_frame:run_all_phases_avm2: avm_trace: LoadinateXML()  file:///C:/Users/PC/Downloads/Flashpoint 11.1 Infinity/Legacy/htdocs/localflash/gadget-golf/game_config.xml
2023-07-09T05:06:32.465644Z  WARN run_frame:run_all_phases_avm2: ruffle_core::stub: Encountered stub: AVM2 XML.name() namespaces
2023-07-09T05:06:32.467027Z  INFO run_frame:run_all_phases_avm2: avm_trace: Load XML: file:///C:/Users/PC/Downloads/Flashpoint 11.1 Infinity/Legacy/htdocs/localflash/gadget-golf/game_config.xml
2023-07-09T05:06:32.467303Z  INFO run_frame:run_all_phases_avm2: avm_trace: Loading file:///C:/Users/PC/Downloads/Flashpoint 11.1 Infinity/Legacy/htdocs/localflash/gadget-golf/game_config.xml
2023-07-09T05:06:32.467507Z  INFO run_frame:run_all_phases_avm2: avm_trace: ----------------------------------------------------------
2023-07-09T05:06:32.467691Z  INFO run_frame:run_all_phases_avm2: avm_trace: Loadinating details...
2023-07-09T05:06:32.467915Z  INFO run_frame:run_all_phases_avm2: avm_trace: file:///C:/Users/PC/Downloads/Flashpoint 11.1 Infinity/Legacy/htdocs/localflash/gadget-golf/game_config.xml: 10/100 bytes (10%)
2023-07-09T05:06:32.468205Z  INFO run_frame:run_all_phases_avm2: avm_trace: ----------------------------------------------------------

2023-07-09T05:06:32.492670Z  INFO avm_trace: Load XML: ./strings/strings.xml
2023-07-09T05:06:32.497408Z  INFO avm_trace: ERROR: ./strings/strings.xml: TypeError: Error #1006: replace is not a function of class XML.
2023-07-09T05:06:32.497766Z  INFO avm_trace: <text>
        <!--
                Note that some fields in the text, such as %HITS% are for formatting,
                where the game inserts a value (usually a number) into the text at that
                position.

                If you add html to text, be sure to surround it with <![CDATA[]]>.

                Where there is a list of identical items, they are shuffled at runtime and
                randomly picked when the game uses the text.
        -->

        <!-- DEBUG BUILD: Set this to set a text string for all translations to use
        <TEST_STRING>X1*:</TEST_STRING>
        -->

        <!-- Title -->
        <szGadget>GADGET</szGadget>
        <szGOLF>GOLF</szGOLF>
        <bnPLAY>PLAY</bnPLAY>
        <eiffel_text>New Hole Added!</eiffel_text>
        <!-- Pick Character Screen -->
        <szPickAPlayer><![CDATA[PICK<br/>A<br/>PLAYER<br/>]]></szPickAPlayer>
        <bnPICKPhineas>Phineas</bnPICKPhineas>
        <bnPICKFerb>Ferb</bnPICKFerb>

        <szPickAMode><![CDATA[CHOOSE<br/>A<br/>MODE<br/>]]></szPickAMode>
        <bnJustPlay>Play Alone</bnJustPlay>
        <bnvsFerb>Me vs. Ferb</bnvsFerb>
        <bnvsPhineas>Me vs. Phineas</bnvsPhineas>

        <szPhineas>Phineas</szPhineas>
        <szFerb>Ferb</szFerb>

        <szPHINEAS>PHINEAS</szPHINEAS>
        <szFERB>FERB</szFERB>
        <bMenu>MENU</bMenu>

        <szTitle><![CDATA[<FONT SIZE="36" COLOR="#FFFFFF" >Phineas &amp; Ferb</FONT><br/><FONT SIZE="36" COLOR="#8080FF" >Gadget Golf</FONT><br/><br/><FONT SIZE="20" COLOR="#FF8080" >[ART IN DEVELOPMENT]</FONT>]]></szTitle>
        <bContinue>CONTINUE</bContinue>

        <szPickChars><![CDATA[<FONT SIZE="36" COLOR="#FFFFFF" >Phineas &amp; Ferb</FONT><br/><FONT SIZE="36" COLOR="#8080FF" >Pick a Character</FONT><br/><br/><FONT SIZE="20" COLOR="#FF8080" >[ART IN DEVELOPMENT]</FONT>]]></szPickChars>
        <bPhineas>Phineas</bPhineas>
        <bFerb>Ferb</bFerb>

        <szSCORECARD>SCORE CARD</szSCORECARD>
        <szHOLE>HOLE</szHOLE>
        <szPAR>PAR</szPAR>
        <szTOTAL>TOTAL</szTOTAL>

        <szMenu>MENU</szMenu>
        <szMenuStrokePhineas><![CDATA[<FONT COLOR="#FF9900">STROKE: </FONT><FONT COLOR="#FFFFFF">%STROKES%</FONT>]]></szMenuStrokePhineas>
        <szMenuHole><![CDATA[<FONT COLOR="#FF9900">HOLE: </FONT><FONT COLOR="#FFFFFF">%HOLE%/%HOLES%</FONT>]]></szMenuHole>
        <szMenuScore><![CDATA[<FONT COLOR="#FF9900">SCORE: </FONT><FONT COLOR="#FFFFFF">%SCORE%</FONT>]]></szMenuScore>
        <szMenuPar><![CDATA[<FONT COLOR="#FF9900">PAR: </FONT><FONT COLOR="#FFFFFF">%PAR%</FONT>]]></szMenuPar>
        <szMenuStrokeFerb><![CDATA[<FONT COLOR="#66CC00">STROKE: </FONT><FONT COLOR="#FFFFFF">%STROKES%</FONT>]]></szMenuStrokeFerb>

        <szHelpTitle>INSTRUCTIONS</szHelpTitle>
        <szHelp1><![CDATA[To select a starting point, use<br/>the %KEY_CHANGEPREV% and %KEY_CHANGENEXT% keys.]]></szHelp1>
        <szHelp2><![CDATA[Use the %KEY_LEFT% and %KEY_RIGHT% keys to aim.]]></szHelp2>
        <szHelp3><![CDATA[Use the %KEY_POWERUP% %KEY_POWERDN% keys again to set power.]]></szHelp3>
        <szHelp4><![CDATA[Press %KEY_SHOOT% or %KEY_ALT_SHOOT% to hit the ball.]]></szHelp4>
        <szHelp5><![CDATA[If you use over 5 strokes on a hole<br/>your turn is over and the tally is set to 6.]]></szHelp5>
        <szHelp6><![CDATA[Roll the ball over bonus bumps<br/>for extra points!]]></szHelp6>
        <szHelp7><![CDATA[You can earn extra points by bouncing the<br/>ball off walls and objects!]]></szHelp7>

        <szLeft>LEFT ARROW</szLeft>
        <szRight>RIGHT ARROW</szRight>
        <szPrev>UP ARROW</szPrev>
        <szNext>DOWN ARROW</szNext>
        <szPowUp>UP ARROW</szPowUp>
        <szPowDn>DOWN ARROW</szPowDn>
        <szShoot>SPACEBAR</szShoot>
        <szAltShoot>ENTER</szAltShoot>
        <szCancel>ESCAPE</szCancel>

        <szINTERIM>INTERIM SCREEN</szINTERIM>
        <szNAME1>Phineas</szNAME1>
        <szNAME2>Ferb</szNAME2>

        <!-- Pause Menu -->
        <szRUSure><![CDATA[ARE YOU SURE YOU<br/>WANT TO QUIT?]]></szRUSure>
        <szSHOTS>TOTAL SHOTS</szSHOTS>
        <bHelp>HELP</bHelp>
        <bMusicOn>MUSIC ON</bMusicOn>
        <bMusicOff>MUSIC OFF</bMusicOff>
        <bResume>RESUME</bResume>
        <bQuit>QUIT</bQuit>
        <bYes>YES</bYes>
        <bNo>NO</bNo>

        <!-- In-game popup events -->
        <szHitsx>%POINTS%pts</szHitsx>
        <szHitsxRebounds>x%HITS% REBOUNDS!</szHitsxRebounds>
        <szSCORE_BILLIARDS>BILLIARDS!</szSCORE_BILLIARDS>
        <szHOLEINONE>HOLE IN ONE!</szHOLEINONE>
        <szUNDERPAR>%HITS% UNDER PAR!</szUNDERPAR>
        <szPAR>PAR!</szPAR>
        <szGADGET>GADGET!</szGADGET>
        <szSCORE_MAXIMUM>MAXIMUM SHOTS!</szSCORE_MAXIMUM>

        <szSorryLimit><![CDATA[Sorry,<br/>you've reached<br/>the 5 stroke<br/>limit!]]></szSorryLimit>
        <szOppLimit><![CDATA[ reached<br/>the 5 stroke<br/>limit!]]></szOppLimit>

        <!-- Game Over -->
        <bSubmitScore>SUBMIT SCORE</bSubmitScore>
        <bPlayAgain>PLAY AGAIN</bPlayAgain>
        <szKeepTrying>KEEP TRYING!</szKeepTrying>
        <szAwesomeJob>CONGRATULATIONS!</szAwesomeJob>

        <szSumTotalHOLE>ALL HOLES:</szSumTotalHOLE>
        <szSumTotalPAR>TOTAL PAR:</szSumTotalPAR>

        <szSumHOLE>HOLE:</szSumHOLE>
        <szSumPAR>PAR:</szSumPAR>
        <szSumPhineas>PHINEAS:</szSumPhineas>
        <szSumFerb>FERB:</szSumFerb>
        <szSumTOTAL><![CDATA[<FONT COLOR="#FF9900">TOTAL SCORE:</FONT><br/><FONT COLOR="#FFFFFF">%SCORE%</FONT>]]></szSumTOTAL>

        <szMAX>MAX</szMAX>

        <!-- Hole tips -->
        <szHole_1><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Watch the freeze rays.]]></szHole_1>
        <szHole_2><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Mind the dozers.]]></szHole_2>
        <szHole_2_sum><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>A summer beach hole!<br>Avoid the crabs...]]></szHole_2_sum>
        <szHole_3><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Go for a ride on the ferris wheel.]]></szHole_3>
        <szHole_4><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Aim for the sucker or take your chances with the slapper.]]></szHole_4>
        <szHole_5><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Try shooting when the mouth is shut.]]></szHole_5>
        <szHole_6><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Shoot the sea monster!]]></szHole_6>
        <szHole_7><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Some flying saucers are more helpful than others.]]></szHole_7>
        <szHole_8><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>You are at Candace's mercy!]]></szHole_8>
        <szHole_9><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Time it right, and you'll go straight to the hole.]]></szHole_9>
        <szHole_10><![CDATA[<FONT SIZE="15" COLOR="#FFFF00">HOLE: %HOLE%<br/>PAR: %PAR%<br/></FONT>Vive la France!]]></szHole_10>

        <!-- Cutscenes -->
        <szHardWork><![CDATA[AFTER ALL OUR HARD WORK,<br/>WE'VE FINALLY FINISHED<br/>OUR MINI GOLF COURSE!]]></szHardWork>
        <szTryItOut><![CDATA[LET'S TRY<br/>IT OUT!]]></szTryItOut>
        <szAwesome><![CDATA[THIS HOLE<br/>IS GONNA BE<br/>SO AWESOME!]]></szAwesome>
        <szIsItReady><![CDATA[IS IT<br/>READY<br/>TO GO?]]></szIsItReady>
        <szMOM><![CDATA[MOM!]]></szMOM>
        <szMOMPFGG><![CDATA[PHINEAS AND FERB<br/>BUILT A MINI-GOLF<br/>COURSE IN THE<br/>BACK YARD!]]></szMOMPFGG>
        <szR2PLAY><![CDATA[I'M READY<br/>TO PLAY!]]></szR2PLAY>
        <szTATR><![CDATA[UM... YOU DO<br/>REALIZE THAT'S<br/>A TENNIS RACKET?]]></szTATR>
        <szGonna3><![CDATA[I'M GONNA<br/>COUNT TO<br/>THREE...]]></szGonna3>
        <szAndIfYouDont><![CDATA[AND IF YOU<br/>DON'T LET ME<br/>PLAY GOLF...]]></szAndIfYouDont>
        <szImGonnaTell><![CDATA[I'M GONNA<br/>TELL MOM!]]></szImGonnaTell>
        <szOne><![CDATA[1]]></szOne>
        <szTwo><![CDATA[2]]></szTwo>
        <szThree><![CDATA[3.]]></szThree>
        <szWonderPyr><![CDATA[I WONDER<br/>WHAT THEY'RE<br/>DOING WITH<br/>THESE PYRAMIDS?]]></szWonderPyr>
        <szPIXSEA><![CDATA[I'M GONNA<br/>TAKE A PICTURE<br/>OF ME AND THIS<br/>SEA-MONSTER]]></szPIXSEA>
        <szToJeremy><![CDATA[AND SEND IT<br/>TO JEREMY!]]></szToJeremy>
        <szOhCandace><![CDATA[OH CANDACE...]]></szOhCandace>
        <szWeNeedHelp><![CDATA[WE NEED YOUR HELP<br/>WITH OUR NEXT HOLE]]></szWeNeedHelp>
        <szReally><![CDATA[REALLY?]]></szReally>
        <szMakingMe><![CDATA[MAKING ME<br/>RIDE THE<br/>BIKE TO POWER<br/>YOUR GADGETS!]]></szMakingMe>
        <szNoFun><![CDATA[THAT<br/>WAS<br/>NO FUN!]]></szNoFun>
        <szOohPretty><![CDATA[OOOH!<br/>PRETTY LIGHTS!]]></szOohPretty>
        <szLikePretty><![CDATA[I LIKE<br/>PRETTY LIGHTS!]]></szLikePretty>
        <szHatePretty><![CDATA[I HATE<br/>PRETTY LIGHTS!]]></szHatePretty>
        <!-- Eiffel cutscenes -->
        <szOOHTET><![CDATA[OOOH!<br/>THE EIFFEL TOWER!]]></szOOHTET>
        <szRightCandace><![CDATA[THAT'S RIGHT,<br/>CANDACE!]]></szRightCandace>
        <szWeExcited><![CDATA[WE'RE EXCITED ABOUT<br/>OUR TRIP TO FRANCE<br/>THIS SUMMER.]]></szWeExcited>
        <szSpecialHole><![CDATA[SO, WE MADE A<br/>SPECIAL PARIS, FRANCE<br/>MINI-GOLF BONUS HOLE!]]></szSpecialHole>
        <szGreatFerb><![CDATA[THAT WAS GREAT,<br/>FERB!]]></szGreatFerb>
        <szICantWait><![CDATA[I CAN'T WAIT<br/>TO GO TO FRANCE!]]></szICantWait>
</text>

2023-07-09T05:06:32.500427Z  INFO avm_trace:
****Loadinator.HaveError
 Loading XML
<Resource id="GameXML" type="XML" url="file:///C:/Users/PC/Downloads/Flashpoint 11.1 Infinity/Legacy/htdocs/localflash/gadget-golf/game_config.xml" method="GET"/>
[Event type="XML FAIL" bubbles=false cancelable=false eventPhase=2]
2023-07-09T05:06:32.500730Z  INFO avm_trace: Loadinate FAILED
2023-07-09T05:06:32.501001Z  INFO avm_trace: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="Loadinator :  Loading XML
<Resource id="GameXML" type="XML" url="file:///C:/Users/PC/Downloads/Flashpoint 11.1 Infinity/Legacy/htdocs/localflash/gadget-golf/game_config.xml" method="GET"/>
[Event type="XML FAIL" bubbles=false cancelable=false eventPhase=2]"]

Expected behavior

https://github.com/ruffle-rs/ruffle/assets/75534590/a8e4081d-cb72-47c5-9613-87063111a9e7

Affected platform

Desktop app

Operating system

Windows 10

Browser

No response

Additional information

Existed in Flashpoint.

Lord-McSweeney commented 1 year ago

This needs XML.replace.

n0samu commented 1 year ago

Fixed by #12966