Skip to content

Commit b7fd620

Browse files
committed
v3 markdown
1 parent 62983c9 commit b7fd620

File tree

6 files changed

+101
-9
lines changed

6 files changed

+101
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
- Pace Trainer
55
- Seed Trainer
66
- Controller input can be enabled outside of Debug Mode
7+
- PAL Mode now has correct SFX
78
- Tweaks to make Garbage Trainer more realistic
89

910
## [v2]

README.md

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,18 @@
1111
* [Trainers](#modes)
1212
* [Tetris](#tetris)
1313
* [T-Spins](#t-spins)
14+
* [Seed](#seed)
1415
* [Stacking](#stacking)
16+
* [Pace](#pace)
1517
* [Setups](#setups)
1618
* [Floor](#floor)
1719
* [(Quick)Tap](#%28quick%29-tap)
1820
* [Garbage](#garbage)
1921
* [Drought](#drought)
22+
* [Input Display](#input-display)
2023
* [Debug Mode](#debug-mode)
2124
* [Level Editor](#level-editor)
2225
* [Savestates](#savestates)
23-
* [Controller Input Display](#controller-input-display)
2426
* [PAL Mode](#pal-mode)
2527
* [Resources](#resources)
2628

@@ -50,12 +52,43 @@ Same gameplay as Type-A, with some improvements: no score cap, no rocket, no cur
5052

5153
Spawn T-Spins in random positions. Additional entry delay on successful T-Spin to prepare for the next state.
5254

55+
### Seed
56+
57+
Provides same piece sets for VS battles (or practise).
58+
59+
Press `select` to generate a random seed.
60+
5361
### Stacking
5462

5563
![Stacking](/screens/stacking.png)
5664

5765
An experiment in highlighting areas of the playfield.
5866

67+
### Pace
68+
69+
![Pace](/screens/pace.png)
70+
71+
Indicates how close you are to achieving a score by 230 lines. Loosely based on Tetris rate.
72+
73+
You can choose scores up to and including 1.5m in increments of 100k.
74+
75+
This can be adjusted for transition or PAL games;
76+
77+
| value | score at 130 lines |
78+
| ----- | ------------------ |
79+
| 4 | 201261 |
80+
| 5 | 252936 |
81+
| 6 | 300278 |
82+
| 7 | 353015 |
83+
| 8 | 400356 |
84+
| 9 | 452031 |
85+
| A | 508690 |
86+
| B | 552131 |
87+
| C | 600535 |
88+
| D | 655460 |
89+
| E | 706051 |
90+
| F | 752310 |
91+
5992
### Setups
6093

6194
![Setups](/screens/setups.png)
@@ -102,6 +135,15 @@ Create artificially inflated droughts. Increasing the value causes less I pieces
102135

103136
0 = normal gameplay I = no line pieces
104137

138+
### Input Display
139+
140+
![Controller](/screens/controller.png)
141+
142+
In debug mode
143+
144+
* Select + Right
145+
Toggle controller input display
146+
105147
## Debug Mode
106148

107149
![Controller](/screens/debug.png)
@@ -157,13 +199,6 @@ Savestates require SRAM to work. Tested and working on Everdrive / Emulator / Mi
157199

158200
Combined with the level editor, savestates are effective for practising specific scenarios.
159201

160-
### Controller input display
161-
162-
![Controller](/screens/controller.png)
163-
164-
* Select + Right
165-
Toggle controller input display
166-
167202
## PAL Mode
168203

169204
Dictate if the NTSC or PAL gameplay mechanics should be used. Should automatically detect region, but can be manually overwritten otherwise.

main.asm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4830,7 +4830,7 @@ targetTable:
48304830
.byte $5A,$A,$89,$1 ; 7
48314831
.byte $B8,$B,$DE,$1 ; 8
48324832
.byte $3E,$D,$B,$2 ; 9
4833-
.byte $A0,$F,$5C,$1 ; A
4833+
.byte $F2,$E,$A,$2 ; A
48344834
.byte $2C,$10,$83,$2 ; B
48354835
.byte $94,$11,$CD,$2 ; C
48364836
.byte $38,$13,$DC,$2 ; D

screens/menu.png

5.22 KB
Loading

screens/pace.png

4.71 KB
Loading

tools/pace.rb

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
Targets = %q(
2+
.byte $0,$0,$0,$0
3+
.byte $68,$1,$4B,$0 ; 1
4+
.byte $F8,$2,$6E,$0 ; 2
5+
.byte $7E,$4,$9A,$0 ; 3
6+
.byte $E6,$5,$E5,$0 ; 4
7+
.byte $6C,$7,$12,$1 ; 5
8+
.byte $CA,$8,$67,$1 ; 6
9+
.byte $5A,$A,$89,$1 ; 7
10+
.byte $B8,$B,$DE,$1 ; 8
11+
.byte $3E,$D,$B,$2 ; 9
12+
.byte $F2,$E,$A,$2 ; A
13+
.byte $2C,$10,$83,$2 ; B
14+
.byte $94,$11,$CD,$2 ; C
15+
.byte $38,$13,$DC,$2 ; D
16+
.byte $B4,$14,$13,$3 ; E
17+
.byte $08,$16,$72,$3
18+
)
19+
.scan(/\$(.+),\$(.+),\$(.+),\$([0-9A-F]+)( |$)/i)
20+
.map.with_index { |a, i|
21+
[
22+
i.to_s(16).upcase,
23+
(a[1].to_i(16) << 8) + a[0].to_i(16),
24+
(a[3].to_i(16) << 8) + a[2].to_i(16)
25+
]
26+
}
27+
28+
def print_pace(threshold, target, range, step = 1)
29+
_, base, mult = Targets[target]
30+
31+
for i in range
32+
index = i * step
33+
if index <= threshold
34+
points = base
35+
else
36+
points = base + (((index-threshold) / (230.0-threshold)) * mult)
37+
end
38+
39+
# print "
40+
# T: #{target.to_s(16).upcase}\
41+
# L: #{index}\
42+
# M: #{points.floor}\
43+
# P: #{(points * index).floor}\
44+
# "
45+
46+
print "| #{target.to_s(16).upcase} | #{(points * index).floor} |\n"
47+
end
48+
end
49+
50+
# pp targets
51+
52+
for target in 0..0xF
53+
print_pace 110, target, 130..130, 1
54+
end
55+
56+
# print_pace 110, 0xA, 1..23, 10

0 commit comments

Comments
 (0)