Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Graphical Speedometer
- This code will display a graphical speedometer at the bottom right of the screen during a race.
- (NTSC-U)
- 68200091 00000001
- 9421FF80 BC610008
- 7D6802A6 91610084
- 480002FD 00000000
- 00000000 183C3C18
- 18001800 66662400
- 00000000 6C6CFE6C
- FE6C6C00 183E603C
- 067C1800 00C6CC18
- 3066C600 386C3876
- DCCC7600 18183000
- 00000000 0C183030
- 30180C00 30180C0C
- 0C183000 00663CFF
- 3C660000 0018187E
- 18180000 00000000
- 00181830 0000007E
- 00000000 00000000
- 00181800 060C1830
- 60C08000 386CC6D6
- C66C3800 18381818
- 18187E00 7CC6061C
- 3066FE00 7CC6063C
- 06C67C00 1C3C6CCC
- FE0C1E00 FEC0C0FC
- 06C67C00 3860C0FC
- C6C67C00 FEC60C18
- 30303000 7CC6C67C
- C6C67C00 7CC6C67E
- 060C7800 00181800
- 00181800 00181800
- 00181830 060C1830
- 180C0600 00007E00
- 007E0000 6030180C
- 18306000 7CC60C18
- 18001800 7CC6DEDE
- DEC07800 386CC6FE
- C6C6C600 FC66667C
- 6666FC00 3C66C0C0
- C0663C00 F86C6666
- 666CF800 FE626878
- 6862FE00 FE626878
- 6860F000 3C66C0C0
- CE663A00 C6C6C6FE
- C6C6C600 3C181818
- 18183C00 1E0C0C0C
- CCCC7800 E6666C78
- 6C66E600 F0606060
- 6266FE00 C6EEFEFE
- D6C6C600 C6E6F6DE
- CEC6C600 7CC6C6C6
- C6C67C00 FC66667C
- 6060F000 7CC6C6C6
- C6CE7C0E FC66667C
- 6C66E600 3C663018
- 0C663C00 7E7E5A18
- 18183C00 C6C6C6C6
- C6C67C00 C6C6C6C6
- C66C3800 C6C6C6D6
- D6FE6C00 C6C66C38
- 6CC6C600 6666663C
- 18183C00 FEC68C18
- 3266FE00 3C303030
- 30303C00 C0603018
- 0C060200 3C0C0C0C
- 0C0C3C00 10386CC6
- 00000000 00000000
- 000000FF 30180C00
- 00000000 0000780C
- 7CCC7600 E0607C66
- 6666DC00 00007CC6
- C0C67C00 1C0C7CCC
- CCCC7600 00007CC6
- FEC07C00 3C6660F8
- 6060F000 000076CC
- CC7C0CF8 E0606C76
- 6666E600 18003818
- 18183C00 06000606
- 0666663C E060666C
- 786CE600 38181818
- 18183C00 0000ECFE
- D6D6D600 0000DC66
- 66666600 00007CC6
- C6C67C00 0000DC66
- 667C60F0 000076CC
- CC7C0C1E 0000DC76
- 6060F000 00007EC0
- 7C06FC00 3030FC30
- 30361C00 0000CCCC
- CCCC7600 0000C6C6
- C66C3800 0000C6D6
- D6FE6C00 0000C66C
- 386CC600 0000C6C6
- C67E06FC 00007E4C
- 18327E00 0E181870
- 18180E00 18181818
- 18181800 7018180E
- 18187000 76DC0000
- 00000000 7DC802A6
- 4800002D 00000000
- EB80EB80 10801080
- 525A52F0 AC26ACAE
- D210D292 74477437
- 29F0296E 26E42670
- 50CC50B6 7FE802A6
- 549ED5BA 7E7EF82E
- 549E15BA 7E9EF82E
- 3D80CC00 618C2000
- 8BEC0049 57EF2834
- 8BEC001D 57FF801E
- A3CC001E 7FF0F378
- 56102834 66108000
- 5485563E 5486863E
- 7CC679D6 7FE53214
- 1FFF0008 7F30FA14
- 7F38CB78 3863FFFF
- 8EA30001 2C150000
- 418200D0 2C15000A
- 40820014 55FF1838
- 7F39FA14 7F38CB78
- 4BFFFFE0 2815007F
- 41800010 28150020
- 40800008 3AA00020
- 3AB5FFE0 56B61838
- 3BE00008 7FE903A6
- 3A400080 7EEEB0AE
- 7EFF9039 41820014
- 2C140000 41820024
- 92980000 48000014
- 2C130000 41820014
- 92780000 48000004
- 7C00C06C 7C0004AC
- 3B180004 5652F87E
- 28120000 41A1FFC4
- 3B18FFE0 7F187A14
- 3AD60001 4220FFAC
- 1FEF0008 7F1FC050
- 3B180020 1FEF0008
- 7FD0C050 7FBEFBD6
- 7FBDF9D6 7FBDF050
- 7C1D7840 40820010
- 55FF1838 7F39FA14
- 7F38CB78 4BFFFF2C
- 81610084 7D6803A6
- B8610008 38210080
- 4E800020 592E532E
- C0000000 00000013
- 3D208168 89290163
- 2C090001 4C820020
- 9421FE80 BC610108
- 7C6802A6 90610184
- 38610008 48000011
- 25336420 6B6D2F68
- 00000000 7C8802A6
- 3D808000 C3EC17C0
- FFE0FA10 FFE0F81C
- 38A017D0 7FE567AE
- 80AC17D0 3D808001
- 618C0ECC 7D8903A6
- 4E800421 38610008
- 3C801C1B 60840201
- 3D808000 818C1850
- 7D8903A6 4E800421
- 80610184 7C6803A6
- B8610108 38210180
- 4E800020 00000000
- C27E4C9C 00000008
- 3DE0809C 81EFD110
- 81EF0020 1E600004
- 7DEF9A14 81EF0000
- 81EF0010 81EF0010
- 807FEE20 3D808168
- 3A600001 9A6C0163
- 3E608000 81EF0024
- 91F317C0 00000000
- (PAL)
- 68200091 00000001
- 9421FF80 BC610008
- 7D6802A6 91610084
- 480002FD 00000000
- 00000000 183C3C18
- 18001800 66662400
- 00000000 6C6CFE6C
- FE6C6C00 183E603C
- 067C1800 00C6CC18
- 3066C600 386C3876
- DCCC7600 18183000
- 00000000 0C183030
- 30180C00 30180C0C
- 0C183000 00663CFF
- 3C660000 0018187E
- 18180000 00000000
- 00181830 0000007E
- 00000000 00000000
- 00181800 060C1830
- 60C08000 386CC6D6
- C66C3800 18381818
- 18187E00 7CC6061C
- 3066FE00 7CC6063C
- 06C67C00 1C3C6CCC
- FE0C1E00 FEC0C0FC
- 06C67C00 3860C0FC
- C6C67C00 FEC60C18
- 30303000 7CC6C67C
- C6C67C00 7CC6C67E
- 060C7800 00181800
- 00181800 00181800
- 00181830 060C1830
- 180C0600 00007E00
- 007E0000 6030180C
- 18306000 7CC60C18
- 18001800 7CC6DEDE
- DEC07800 386CC6FE
- C6C6C600 FC66667C
- 6666FC00 3C66C0C0
- C0663C00 F86C6666
- 666CF800 FE626878
- 6862FE00 FE626878
- 6860F000 3C66C0C0
- CE663A00 C6C6C6FE
- C6C6C600 3C181818
- 18183C00 1E0C0C0C
- CCCC7800 E6666C78
- 6C66E600 F0606060
- 6266FE00 C6EEFEFE
- D6C6C600 C6E6F6DE
- CEC6C600 7CC6C6C6
- C6C67C00 FC66667C
- 6060F000 7CC6C6C6
- C6CE7C0E FC66667C
- 6C66E600 3C663018
- 0C663C00 7E7E5A18
- 18183C00 C6C6C6C6
- C6C67C00 C6C6C6C6
- C66C3800 C6C6C6D6
- D6FE6C00 C6C66C38
- 6CC6C600 6666663C
- 18183C00 FEC68C18
- 3266FE00 3C303030
- 30303C00 C0603018
- 0C060200 3C0C0C0C
- 0C0C3C00 10386CC6
- 00000000 00000000
- 000000FF 30180C00
- 00000000 0000780C
- 7CCC7600 E0607C66
- 6666DC00 00007CC6
- C0C67C00 1C0C7CCC
- CCCC7600 00007CC6
- FEC07C00 3C6660F8
- 6060F000 000076CC
- CC7C0CF8 E0606C76
- 6666E600 18003818
- 18183C00 06000606
- 0666663C E060666C
- 786CE600 38181818
- 18183C00 0000ECFE
- D6D6D600 0000DC66
- 66666600 00007CC6
- C6C67C00 0000DC66
- 667C60F0 000076CC
- CC7C0C1E 0000DC76
- 6060F000 00007EC0
- 7C06FC00 3030FC30
- 30361C00 0000CCCC
- CCCC7600 0000C6C6
- C66C3800 0000C6D6
- D6FE6C00 0000C66C
- 386CC600 0000C6C6
- C67E06FC 00007E4C
- 18327E00 0E181870
- 18180E00 18181818
- 18181800 7018180E
- 18187000 76DC0000
- 00000000 7DC802A6
- 4800002D 00000000
- EB80EB80 10801080
- 525A52F0 AC26ACAE
- D210D292 74477437
- 29F0296E 26E42670
- 50CC50B6 7FE802A6
- 549ED5BA 7E7EF82E
- 549E15BA 7E9EF82E
- 3D80CC00 618C2000
- 8BEC0049 57EF2834
- 8BEC001D 57FF801E
- A3CC001E 7FF0F378
- 56102834 66108000
- 5485563E 5486863E
- 7CC679D6 7FE53214
- 1FFF0008 7F30FA14
- 7F38CB78 3863FFFF
- 8EA30001 2C150000
- 418200D0 2C15000A
- 40820014 55FF1838
- 7F39FA14 7F38CB78
- 4BFFFFE0 2815007F
- 41800010 28150020
- 40800008 3AA00020
- 3AB5FFE0 56B61838
- 3BE00008 7FE903A6
- 3A400080 7EEEB0AE
- 7EFF9039 41820014
- 2C140000 41820024
- 92980000 48000014
- 2C130000 41820014
- 92780000 48000004
- 7C00C06C 7C0004AC
- 3B180004 5652F87E
- 28120000 41A1FFC4
- 3B18FFE0 7F187A14
- 3AD60001 4220FFAC
- 1FEF0008 7F1FC050
- 3B180020 1FEF0008
- 7FD0C050 7FBEFBD6
- 7FBDF9D6 7FBDF050
- 7C1D7840 40820010
- 55FF1838 7F39FA14
- 7F38CB78 4BFFFF2C
- 81610084 7D6803A6
- B8610008 38210080
- 4E800020 592E532E
- C0000000 00000013
- 3D208168 89290163
- 2C090001 4C820020
- 9421FE80 BC610108
- 7C6802A6 90610184
- 38610008 48000011
- 25336420 6B6D2F68
- 00000000 7C8802A6
- 3D808000 C3EC17C0
- FFE0FA10 FFE0F81C
- 38A017D0 7FE567AE
- 80AC17D0 3D808001
- 618C1A2C 7D8903A6
- 4E800421 38610008
- 3C801C1B 60840201
- 3D808000 818C1850
- 7D8903A6 4E800421
- 80610184 7C6803A6
- B8610108 38210180
- 4E800020 00000000
- C27EEFAC 00000008
- 3DE0809C 81EF18F8
- 81EF0020 1E600004
- 7DEF9A14 81EF0000
- 81EF0010 81EF0010
- 807F3618 3D808168
- 3A600001 9A6C0163
- 3E608000 81EF0024
- 91F317C0 00000000
- (NTSC-J)
- 68200091 00000001
- 9421FF80 BC610008
- 7D6802A6 91610084
- 480002FD 00000000
- 00000000 183C3C18
- 18001800 66662400
- 00000000 6C6CFE6C
- FE6C6C00 183E603C
- 067C1800 00C6CC18
- 3066C600 386C3876
- DCCC7600 18183000
- 00000000 0C183030
- 30180C00 30180C0C
- 0C183000 00663CFF
- 3C660000 0018187E
- 18180000 00000000
- 00181830 0000007E
- 00000000 00000000
- 00181800 060C1830
- 60C08000 386CC6D6
- C66C3800 18381818
- 18187E00 7CC6061C
- 3066FE00 7CC6063C
- 06C67C00 1C3C6CCC
- FE0C1E00 FEC0C0FC
- 06C67C00 3860C0FC
- C6C67C00 FEC60C18
- 30303000 7CC6C67C
- C6C67C00 7CC6C67E
- 060C7800 00181800
- 00181800 00181800
- 00181830 060C1830
- 180C0600 00007E00
- 007E0000 6030180C
- 18306000 7CC60C18
- 18001800 7CC6DEDE
- DEC07800 386CC6FE
- C6C6C600 FC66667C
- 6666FC00 3C66C0C0
- C0663C00 F86C6666
- 666CF800 FE626878
- 6862FE00 FE626878
- 6860F000 3C66C0C0
- CE663A00 C6C6C6FE
- C6C6C600 3C181818
- 18183C00 1E0C0C0C
- CCCC7800 E6666C78
- 6C66E600 F0606060
- 6266FE00 C6EEFEFE
- D6C6C600 C6E6F6DE
- CEC6C600 7CC6C6C6
- C6C67C00 FC66667C
- 6060F000 7CC6C6C6
- C6CE7C0E FC66667C
- 6C66E600 3C663018
- 0C663C00 7E7E5A18
- 18183C00 C6C6C6C6
- C6C67C00 C6C6C6C6
- C66C3800 C6C6C6D6
- D6FE6C00 C6C66C38
- 6CC6C600 6666663C
- 18183C00 FEC68C18
- 3266FE00 3C303030
- 30303C00 C0603018
- 0C060200 3C0C0C0C
- 0C0C3C00 10386CC6
- 00000000 00000000
- 000000FF 30180C00
- 00000000 0000780C
- 7CCC7600 E0607C66
- 6666DC00 00007CC6
- C0C67C00 1C0C7CCC
- CCCC7600 00007CC6
- FEC07C00 3C6660F8
- 6060F000 000076CC
- CC7C0CF8 E0606C76
- 6666E600 18003818
- 18183C00 06000606
- 0666663C E060666C
- 786CE600 38181818
- 18183C00 0000ECFE
- D6D6D600 0000DC66
- 66666600 00007CC6
- C6C67C00 0000DC66
- 667C60F0 000076CC
- CC7C0C1E 0000DC76
- 6060F000 00007EC0
- 7C06FC00 3030FC30
- 30361C00 0000CCCC
- CCCC7600 0000C6C6
- C66C3800 0000C6D6
- D6FE6C00 0000C66C
- 386CC600 0000C6C6
- C67E06FC 00007E4C
- 18327E00 0E181870
- 18180E00 18181818
- 18181800 7018180E
- 18187000 76DC0000
- 00000000 7DC802A6
- 4800002D 00000000
- EB80EB80 10801080
- 525A52F0 AC26ACAE
- D210D292 74477437
- 29F0296E 26E42670
- 50CC50B6 7FE802A6
- 549ED5BA 7E7EF82E
- 549E15BA 7E9EF82E
- 3D80CC00 618C2000
- 8BEC0049 57EF2834
- 8BEC001D 57FF801E
- A3CC001E 7FF0F378
- 56102834 66108000
- 5485563E 5486863E
- 7CC679D6 7FE53214
- 1FFF0008 7F30FA14
- 7F38CB78 3863FFFF
- 8EA30001 2C150000
- 418200D0 2C15000A
- 40820014 55FF1838
- 7F39FA14 7F38CB78
- 4BFFFFE0 2815007F
- 41800010 28150020
- 40800008 3AA00020
- 3AB5FFE0 56B61838
- 3BE00008 7FE903A6
- 3A400080 7EEEB0AE
- 7EFF9039 41820014
- 2C140000 41820024
- 92980000 48000014
- 2C130000 41820014
- 92780000 48000004
- 7C00C06C 7C0004AC
- 3B180004 5652F87E
- 28120000 41A1FFC4
- 3B18FFE0 7F187A14
- 3AD60001 4220FFAC
- 1FEF0008 7F1FC050
- 3B180020 1FEF0008
- 7FD0C050 7FBEFBD6
- 7FBDF9D6 7FBDF050
- 7C1D7840 40820010
- 55FF1838 7F39FA14
- 7F38CB78 4BFFFF2C
- 81610084 7D6803A6
- B8610008 38210080
- 4E800020 592E532E
- C0000000 00000013
- 3D208168 89290163
- 2C090001 4C820020
- 9421FE80 BC610108
- 7C6802A6 90610184
- 38610008 48000011
- 25336420 6B6D2F68
- 00000000 7C8802A6
- 3D808000 C3EC17C0
- FFE0FA10 FFE0F81C
- 38A017D0 7FE567AE
- 80AC17D0 3D808001
- 618C1950 7D8903A6
- 4E800421 38610008
- 3C801C1B 60840201
- 3D808000 818C1850
- 7D8903A6 4E800421
- 80610184 7C6803A6
- B8610108 38210180
- 4E800020 00000000
- C27EE618 00000008
- 3DE0809C 81EF0958
- 81EF0020 1E600004
- 7DEF9A14 81EF0000
- 81EF0010 81EF0010
- 807F2678 3D808168
- 3A600001 9A6C0163
- 3E608000 81EF0024
- 91F317C0 00000000
- (NTSC-K)
- 68200091 00000001
- 9421FF80 BC610008
- 7D6802A6 91610084
- 480002FD 00000000
- 00000000 183C3C18
- 18001800 66662400
- 00000000 6C6CFE6C
- FE6C6C00 183E603C
- 067C1800 00C6CC18
- 3066C600 386C3876
- DCCC7600 18183000
- 00000000 0C183030
- 30180C00 30180C0C
- 0C183000 00663CFF
- 3C660000 0018187E
- 18180000 00000000
- 00181830 0000007E
- 00000000 00000000
- 00181800 060C1830
- 60C08000 386CC6D6
- C66C3800 18381818
- 18187E00 7CC6061C
- 3066FE00 7CC6063C
- 06C67C00 1C3C6CCC
- FE0C1E00 FEC0C0FC
- 06C67C00 3860C0FC
- C6C67C00 FEC60C18
- 30303000 7CC6C67C
- C6C67C00 7CC6C67E
- 060C7800 00181800
- 00181800 00181800
- 00181830 060C1830
- 180C0600 00007E00
- 007E0000 6030180C
- 18306000 7CC60C18
- 18001800 7CC6DEDE
- DEC07800 386CC6FE
- C6C6C600 FC66667C
- 6666FC00 3C66C0C0
- C0663C00 F86C6666
- 666CF800 FE626878
- 6862FE00 FE626878
- 6860F000 3C66C0C0
- CE663A00 C6C6C6FE
- C6C6C600 3C181818
- 18183C00 1E0C0C0C
- CCCC7800 E6666C78
- 6C66E600 F0606060
- 6266FE00 C6EEFEFE
- D6C6C600 C6E6F6DE
- CEC6C600 7CC6C6C6
- C6C67C00 FC66667C
- 6060F000 7CC6C6C6
- C6CE7C0E FC66667C
- 6C66E600 3C663018
- 0C663C00 7E7E5A18
- 18183C00 C6C6C6C6
- C6C67C00 C6C6C6C6
- C66C3800 C6C6C6D6
- D6FE6C00 C6C66C38
- 6CC6C600 6666663C
- 18183C00 FEC68C18
- 3266FE00 3C303030
- 30303C00 C0603018
- 0C060200 3C0C0C0C
- 0C0C3C00 10386CC6
- 00000000 00000000
- 000000FF 30180C00
- 00000000 0000780C
- 7CCC7600 E0607C66
- 6666DC00 00007CC6
- C0C67C00 1C0C7CCC
- CCCC7600 00007CC6
- FEC07C00 3C6660F8
- 6060F000 000076CC
- CC7C0CF8 E0606C76
- 6666E600 18003818
- 18183C00 06000606
- 0666663C E060666C
- 786CE600 38181818
- 18183C00 0000ECFE
- D6D6D600 0000DC66
- 66666600 00007CC6
- C6C67C00 0000DC66
- 667C60F0 000076CC
- CC7C0C1E 0000DC76
- 6060F000 00007EC0
- 7C06FC00 3030FC30
- 30361C00 0000CCCC
- CCCC7600 0000C6C6
- C66C3800 0000C6D6
- D6FE6C00 0000C66C
- 386CC600 0000C6C6
- C67E06FC 00007E4C
- 18327E00 0E181870
- 18180E00 18181818
- 18181800 7018180E
- 18187000 76DC0000
- 00000000 7DC802A6
- 4800002D 00000000
- EB80EB80 10801080
- 525A52F0 AC26ACAE
- D210D292 74477437
- 29F0296E 26E42670
- 50CC50B6 7FE802A6
- 549ED5BA 7E7EF82E
- 549E15BA 7E9EF82E
- 3D80CC00 618C2000
- 8BEC0049 57EF2834
- 8BEC001D 57FF801E
- A3CC001E 7FF0F378
- 56102834 66108000
- 5485563E 5486863E
- 7CC679D6 7FE53214
- 1FFF0008 7F30FA14
- 7F38CB78 3863FFFF
- 8EA30001 2C150000
- 418200D0 2C15000A
- 40820014 55FF1838
- 7F39FA14 7F38CB78
- 4BFFFFE0 2815007F
- 41800010 28150020
- 40800008 3AA00020
- 3AB5FFE0 56B61838
- 3BE00008 7FE903A6
- 3A400080 7EEEB0AE
- 7EFF9039 41820014
- 2C140000 41820024
- 92980000 48000014
- 2C130000 41820014
- 92780000 48000004
- 7C00C06C 7C0004AC
- 3B180004 5652F87E
- 28120000 41A1FFC4
- 3B18FFE0 7F187A14
- 3AD60001 4220FFAC
- 1FEF0008 7F1FC050
- 3B180020 1FEF0008
- 7FD0C050 7FBEFBD6
- 7FBDF9D6 7FBDF050
- 7C1D7840 40820010
- 55FF1838 7F39FA14
- 7F38CB78 4BFFFF2C
- 81610084 7D6803A6
- B8610008 38210080
- 4E800020 592E532E
- C0000000 00000013
- 3D208168 89290163
- 2C090001 4C820020
- 9421FE80 BC610108
- 7C6802A6 90610184
- 38610008 48000011
- 25336420 6B6D2F68
- 00000000 7C8802A6
- 3D808000 C3EC17C0
- FFE0FA10 FFE0F81C
- 38A017D0 7FE567AE
- 80AC17D0 3D808001
- 618C1A94 7D8903A6
- 4E800421 38610008
- 3C801C1B 60840201
- 3D808000 818C1850
- 7D8903A6 4E800421
- 80610184 7C6803A6
- B8610108 38210180
- 4E800020 00000000
- C27DD36C 00000008
- 3DE0809B 81EFFF38
- 81EF0020 1E600004
- 7DEF9A14 81EF0000
- 81EF0010 81EF0010
- 807F1C58 3D808168
- 3A600001 9A6C0163
- 3E608000 81EF0024
- 91F317C0 00000000
- #==================================================#
- # Source #
- #==================================================#
- lis r9, 0x8168 # r12-r9 are safe to use when the code handler is executing.
- lbz r9, 0x0163(r9)
- cmpwi r9, 0x1 # Check if we are in a race.
- bnelr- # If we are not in a race, do not draw.
- .set region, ''
- .set sprintf, 0x0
- .if (region == 'E' || region == 'e') # RMCE
- sprintf = 0x80010ECC
- .elseif (region == 'P' || region == 'p') # RMCP
- sprintf = 0x80011A2C
- .elseif (region == 'J' || region == 'j') # RMCJ
- sprintf = 0x80011950
- .elseif (region == 'K' || region == 'k') # RMCK
- sprintf = 0x80011A94
- .else # Invalid Region
- .abort
- .endif
- # Function Prologue...
- stwu r1, -384(r1)
- stmw r3, 264(r1)
- mflr r3
- stw r3, 388(r1)
- #==================================================#
- # sprintf #
- #--------------------------------------------------#
- # Form the statement and call the function. #
- # #
- # r3 r4 r5 #
- # sprintf(char* str, const char* format, ...); #
- #==================================================#
- addi r3, r1, 8 # Store the pointer to the buffer where the String will be written into r3.
- bl branch_link_write_sprintf_statement
- .string "%3d km/h\0\0\0"
- branch_link_write_sprintf_statement:
- mflr r4 # Store the pointer to the String into r4.
- # Convert our speed...
- lis r12, 0x8000
- lfs f31, 0x17C0(r12) # f31-f14 are non-volatile, however, they are unused when the code handler is executing.
- fabs f31, f31 # Get the absolute value of our speed to account for being in reverse.
- fctiw f31, f31 # Convert our speed from a floating-point number to an integer.
- # Store our speed...
- li r5, 0x17D0
- stfiwx f31, r5, r12 # Store the lower 32 bits of f31 to the address in r12 offset by the value in r5.
- lwz r5, 0x17D0(r12) # Load our speed (in hexadecimal) into r5.
- # Branch to the sprintf function...
- lis r12, sprintf@h # Set the higher 16-bits of r12 to the higher 16-bits of the sprintf function address, and clear the lower 16-bits.
- ori r12, r12, sprintf@l # Set the lower 16-bits of r12 to the lower 16-bits of the sprintf function address.
- mtctr r12
- bctrl
- # Form the draw statement...
- addi r3, r1, 8 # Store the pointer to the buffer where the String is located into r3.
- lis r4, 0x1C1B # X and Y Coordinates, respectively. [8 bits each].
- ori r4, r4, 0x0201 # Font and Background Colour, respectively. [8 bits each].
- # Branch to the draw function...
- lis r12, 0x8000
- lwz r12, 0x1850(r12)
- mtctr r12
- bctrl
- # Function Epilogue...
- lwz r3, 388(r1)
- mtlr r3
- lmw r3, 264(r1)
- addi r1, r1, 384
- blr
- #==================================================#
- # Speedometer #
- #--------------------------------------------------#
- # We do not need to 'reset' the speedometer after #
- # a race. This is because it will disappear. When #
- # the next race begins, it will reset itself to #
- # our current speed (0) before it reappears. #
- #==================================================#
- # Original Address Ports:
- # RMCE - 0x807E4C9C
- # RMCP - 0x807EEFAC
- # RMCJ - 0x807EE618
- # RMCK - 0x807DD36C
- .set playerBase, 0x0
- .set playerDataUNK, 0x0
- .set region, ''
- .if (region == 'E' || region == 'e') # RMCE
- playerBase = 0x809BD110
- playerDataUNK = 0x809BEE20
- .elseif (region == 'P' || region == 'p') # RMCP
- playerBase = 0x809C18F8
- playerDataUNK = 0x809C3618
- .elseif (region == 'J' || region == 'j') # RMCJ
- playerBase = 0x809C0958
- playerDataUNK = 0x809C2678
- .elseif (region == 'K' || region == 'k') # RMCK
- playerBase = 0x809AFF38
- playerDataUNK = 0x809B1C58
- .else # Invalid Region
- .abort
- .endif
- lis r15, playerBase@ha
- lwz r15, playerBase@l(r15)
- lwz r15, 32(r15)
- mulli r19, r0, 4
- add r15, r15, r19
- lwz r15, 0(r15)
- lwz r15, 16(r15)
- lwz r15, 16(r15)
- lwz r3, playerDataUNK@l(r31) # Original instruction
- lis r12, 0x8168 # This area of memory automatically clears after Scene Exit transitions, which will set the bool to false.
- li r19, 0x1 # Set the bool to true, indicating that we are in a race.
- stb r19, 0x0163(r12) # The current C2 replacement branch will only execute while we are in a race, ergo the bool will remain false until then.
- lis r19, 0x8000
- lwz r15, 36(r15) # Load our speed (floating-point) into r15.
- stw r15, 0x17C0(r19) # Store our speed.
- Notes:
- - This code is designed for interlace scan.
- Code Creator: Star
- Code Credits: Y.S. (Easy Extender 1.1), Chadderz (Graphic Speedometer), mdmwii (Speedometer)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement