今回もテイルズオブエターニアが題材です 消費税と同じく、v0が現在所持金、t2が購入金額です 購入金額割引プログラムコード 80007B00 2415000A li s5,$000a 80007B04 01550018 mult t2,s5 80007B08 0000B012 mflo s6 80007B0C 24150064 li s5,$0064 80007B10 02D5001A div s6,s5 80007B14 0000B012 mflo s6 80007B18 01565023 subu t2,t2,s6 80007B1C 24150000 li s5,$0000 80007B20 24160000 li s6,$0000 80007B24 004A1023 subu v0,v0,t2 80007B28 AE42092C sw v0,$092c(s2) 80007B2C 080467D0 j $80119f40 空きメモリの飛ばすタイミングは消費税と同じ 減算命令の80119F3Cです 80119F3C 08001EC0 j $80007B00 80119F40 00000000 nop に書換えて下さい。 購入金額は100(10進数です)を例にします 1行目でs5に000Aを書き込みます Aは10進数で10になります 2行目でt2とs5で掛算をします 式で表すと 100×10=1000 ここで購入金額が1000になります 3行目でt2×s5の結果をs6に書き込みます 4行目でs5に64を書き込みます 64は10進数で100になります 5行目でs6とs5で割算をします 式で表すと 1000÷100=10 ここで割り引きにする数値が算出されます 6行目でs6÷s5の計算結果をs6に書き込みます 7行目でt2の購入金額からs6を引き、t2に書き込みます 式で表すと 100-10=90 ここで実際に購入金額が割引になります 8行目と9行目は、どうやらs6レジスタに 0以外が書き込まれているとハングしてしまうようなので 念の為s5も一緒にここの2行でレジスタ内の数値を0に変更します 10行目で80119F3Cで潰した減算命令を書き直します この命令で、実際に割引した金額(90)を 現在所持金から減らします 11行目で減ったお金を現在所持金に書き込みます 12行目でプログラムを元のプログラムに戻します 1行目の部分で割引きにしたい数値を指定します 割引率×10倍を指定する必要があるので 2割引きにしたいのなら10進数で20 5割引きにしたいのなら10進数で50になります これで出来たエターニアのコードです ☆割引セール実施中☆ D0119F38 5012 80119F3C 1EC0 D0119F38 5012 80119F3E 0800 D0119F38 5012 80119F40 0000 D0119F38 5012 80119F42 0000 80007B00 00?? 80007B02 2415 80007B04 0018 80007B06 0155 80007B08 B012 80007B0C 0064 80007B0E 2415 80007B10 001A 80007B12 02D5 80007B14 B012 80007B18 5023 80007B1A 0156 80007B1E 2415 80007B22 2416 80007B24 1023 80007B26 004A 80007B28 092C 80007B2A AE42 80007B2C 67D0 80007B2E 0804 ??=割引率指定です 0A=1割引 14=2割引 1E=3割引 28=4割引 32=5割引 3C=6割引 46=7割引 50=8割引 5A=9割引 64=無料サービス実施中 「消費税がかかる」とは併用出来ません。