今回もテイルズオブエターニアが題材です
消費税と同じく、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=無料サービス実施中
「消費税がかかる」とは併用出来ません。