Difference between revisions of "User:1ccsDontMatter/notes"
| (28 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | ==  | + | = Data =   | 
| − | + | Data taken from stage 1 and air circus (rates are different on different stages) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | == Damage research == | |
| + | Gain fullpower normal shot: 1 damage | ||
| + | Gain fullpower forward shot: 2 damage | ||
| + | Gain spinbump: 3 damage | ||
| − | =  | + | == Base acceleration == | 
| − | |||
| − | |||
| * Borrnam - 2, 4 booster | * Borrnam - 2, 4 booster | ||
| * Miyamoto - 6, 6 booster | * Miyamoto - 6, 6 booster | ||
| Line 50: | Line 17: | ||
| * Bulgin - 1, 4 booster | * Bulgin - 1, 4 booster | ||
| == Boost activation == | == Boost activation == | ||
| − | * Borrnam -   | + | * Borrnam - 0x3c | 
| − | *  | + | * Nirvana - 0x46 | 
| − | *  | + | * Miyamoto - 0x50 | 
| − | *  | + | * Gain - 0x5A | 
| − | *  | + | * Chitta - 0x64 | 
| − | *  | + | * HJ - 0x6E | 
| − | *  | + | * KL - 0x78 | 
| − | * Bulgin -  | + | * Bulgin - 0x97 | 
| + | |||
| == Back brake == | == Back brake == | ||
| * Borrnam - -8 per frame | * Borrnam - -8 per frame | ||
| Line 76: | Line 44: | ||
| * Chitta - 3 | * Chitta - 3 | ||
| * Bulgin - -1 | * Bulgin - -1 | ||
| + | == Movement speed == | ||
| + | * Borrnam - 0xE | ||
| + | * Miyamoto - 0x14 | ||
| + | * HJ - 0x11 | ||
| + | * Nirvana - 0x15 | ||
| + | * KL - 0x13 | ||
| + | * Gain - 0x12 | ||
| + | * Chitta - 0x10 | ||
| + | * Bulgin - 0xF | ||
| + | == Frailty (negative weight) == | ||
| + | * Bulgin - 0x5 | ||
| + | * HJ - 0x06 | ||
| + | * KL - 0x7 | ||
| + | * Gain - 0x8 | ||
| + | * Miyamoto - 0x9 | ||
| + | * Borrnam - 0xA | ||
| + | * Chitta - 0xB | ||
| + | * Nirvana - 0x0C | ||
| = Memory addresses = | = Memory addresses = | ||
| ==RAM== | ==RAM== | ||
| + | 10056E - 16 - per frame score accumulator (dumped every frame into a player's score) | ||
| + | |||
| + | 10058c - 16 - temp rank | ||
| + | |||
| + | 10058E - 16 - base rank | ||
| + | |||
| + | 1006C7 - 16 - enemy HP (array slot 1?) | ||
| + | |||
| + | 1006C7 - 16 - current level selection and state | ||
| + | |||
| 1012ee - 16 - charge count to activate booster (player holding down shot button) | 1012ee - 16 - charge count to activate booster (player holding down shot button) | ||
| + | |||
| + | 1012f0 - 16 - amount needed to activate booster  | ||
| + | |||
| + | 101324 - 8 - p1 ship movement speed | ||
| + | |||
| + | 101325 - 8 - p1 ship frailty | ||
| + | |||
| + | 1016AA - obj- base of enemy racer obj (slot 1?) | ||
| + | |||
| + | 1016AA - 16 - relative offset (from somewhere) to enemy racer script. 2A9A = chitta, 2BBA = miyamoto | ||
| 102c4a - obj- base of data object | 102c4a - obj- base of data object | ||
| Line 90: | Line 96: | ||
| 102c88 - 32 - current logical position in level (goal line progress) | 102c88 - 32 - current logical position in level (goal line progress) | ||
| − | + | 102c90 - 16 - current minimum possible speed of screen scroll | |
| 102dcd - 16 - current rate of change (used for passing to scroll speed modifier function) | 102dcd - 16 - current rate of change (used for passing to scroll speed modifier function) | ||
| ==ROM== | ==ROM== | ||
| + | |||
| + | 71890 - 16 - Nirvana booster time (0x46) | ||
| + | |||
| + | 71892 - 16 - Nirvana booster speed (8) | ||
| + | |||
| + | ==Program== | ||
| + | 001C46 - function that converts and displays bcd onto the screen | ||
| + | |||
| + | 005A08 - the code that doubles pre-bcd score value | ||
| 007af6 - somewhere in player init function - sets booster time for p1 (1012ee) | 007af6 - somewhere in player init function - sets booster time for p1 (1012ee) | ||
| 009694 - sets argument for function (booster boost amount) | 009694 - sets argument for function (booster boost amount) | ||
| + | |||
| + | 011634 - calls racer speed update? | ||
| 018830 - | 018830 - | ||
| 018890 - writes to current player scroll speed during booster use | 018890 - writes to current player scroll speed during booster use | ||
| + | |||
| + | = Mechanics = | ||
| + | |||
| + | == Score doubling == | ||
| + | Enemy point values, data entry'd as if they were decimals (actually hexadecimal) -> double (still hex) -> convert to BCD by adding each byte with BCD arithmetic (68k abcd instruction) -> display as decimal on screen. | ||
| + | |||
| + | 200pt -> 0x200 -> double -> 0x400 -> convert to BCD -> 400  | ||
| + | |||
| + | 300pt -> 0x300 -> double -> 0x600 -> convert to BCD -> 600  | ||
| + | |||
| + | 400pt -> 0x400 -> double -> 0x800 -> convert to BCD -> 800  | ||
| + | |||
| + | 500pt -> 0x500 -> double -> 0xA00 -> convert to BCD -> 1000  | ||
| + | |||
| + | 600pt -> 0x600 -> double -> 0xC00 -> convert to BCD -> 1200  | ||
| + | |||
| + | 700pt -> 0x700 -> double -> 0xE00 -> convert to BCD -> 1400  | ||
| + | |||
| + | 800pt -> 0x800 -> double -> 0x1000 -> convert to BCD -> 1000  | ||
| + | |||
| + | 900pt -> 0x900 -> double -> 0x1200 -> convert to BCD -> 1200  | ||
| + | |||
| + | 950pt -> 0x950 -> double -> 0x12A0 -> convert to BCD -> 1300 | ||
| + | |||
| + | (the game doesn't have any enemies around base score 0xA00 - 0xF00) | ||
| + | |||
| + | 1000pt -> 0x1000 -> double -> 0x2000 -> convert to BCD -> 2000 | ||
| + | |||
| + | Kingdom Grandprix, the game where 950 X 2 points is less than 700 X 2 points. | ||
| + | |||
| + | == Rank data == | ||
| + | ===KGP=== | ||
| + | ====easy dip==== | ||
| + | s1: 8-4, 1 | ||
| + | |||
| + | s2: 8-4, 2 | ||
| + | |||
| + | s3: B-4, 4 | ||
| + | |||
| + | s4: 8-4, 6 | ||
| + | ====normal dip==== | ||
| + | s1: 8-4, 4 | ||
| + | |||
| + | s4: A | ||
| + | |||
| + | s5: C | ||
| + | |||
| + | S6: E, E | ||
| + | |||
| + | Yashiki: 0x10, 0x10 | ||
| + | |||
| + | S7: 0x14, 0x14 | ||
| + | S6: 0x16, 0x16 | ||
| + | |||
| + | ====hard dip==== | ||
| + | s1: 8-4, 8 | ||
| + | |||
| + | S7: 0x18, 0x18 | ||
| + | |||
| + | ====very hard dip==== | ||
| + | s1:0x14-0x10, 0x10 | ||
| + | |||
| + | s2:0x18-0x12, 0x12 | ||
| + | |||
| + | s3:0x1A-0x18, 0x14 | ||
| + | |||
| + | s5: 0x16 | ||
| + | |||
| + | S7: 0x20, 0x20 | ||
| + | |||
| + | ===SMD=== | ||
| + | ====easy dip==== | ||
| + | s1: 5, 1 | ||
| + | |||
| + | s2: 5, 3 | ||
| + | ====normal dip==== | ||
| + | s1: 0xE, 8 | ||
| + | |||
| + | s2: 0xB, 0xB | ||
| + | |||
| + | s5: 0x19, 0x14 | ||
| + | |||
| + | s6: 0x2B 0x17 | ||
| + | |||
| + | Yashiki: 0x1A | ||
| + | |||
| + | s7: 0x20 | ||
| + | |||
| + | s9: 0x26 | ||
| + | ====hard dip==== | ||
| + | s1: 0x10, 0x10 | ||
| + | |||
| + | ==todo== | ||
| + | ===stuff=== | ||
| + | *starting bomb | ||
| + | *win from stage hazards | ||
| + | *manual rival knockbacks | ||
| + | *enemy scroll despawning | ||
| + | *subweapon dragging for more damage | ||
| + | *losing on purpose | ||
| + | *rank breakpoints | ||
| + | *collecting all powerups | ||
| + | |||
| + | ===score=== | ||
| + | *spins | ||
| + | *diagonal edge spins | ||
| + | *spinbomb glitch | ||
| + | *wall spins | ||
| + | *upper wall & enemy brake taps | ||
| + | *strato sphere infinite spawn | ||
| + | *speedkill bosses for extra enemies | ||
| + | |||
| + | |||
| + | ===avoid=== | ||
| + | *spinglitch deactivate | ||
| + | *enemies despawning before awarding points | ||
| + | *(score) enemies dying to environmental damage | ||
Latest revision as of 04:13, 14 July 2020
Contents
Data
Data taken from stage 1 and air circus (rates are different on different stages)
Damage research
Gain fullpower normal shot: 1 damage Gain fullpower forward shot: 2 damage Gain spinbump: 3 damage
Base acceleration
- Borrnam - 2, 4 booster
- Miyamoto - 6, 6 booster
- HJ - 3, 5 booster
- Nirvana - 8, 8 booster
- KL - 5, 6 booster
- Gain - 4, 6 booster
- Chitta - 7, 8 booster
- Bulgin - 1, 4 booster
Boost activation
- Borrnam - 0x3c
- Nirvana - 0x46
- Miyamoto - 0x50
- Gain - 0x5A
- Chitta - 0x64
- HJ - 0x6E
- KL - 0x78
- Bulgin - 0x97
Back brake
- Borrnam - -8 per frame
- Miyamoto - -4
- HJ - -7
- Nirvana - -2
- KL - -6
- Gain - -5
- Chitta - -1
- Bulgin - -3
Wall brake
- Borrnam - -6 per frame
- Miyamoto - -7
- HJ - -4
- Nirvana - -8
- KL - -5
- Gain - -2
- Chitta - 3
- Bulgin - -1
Movement speed
- Borrnam - 0xE
- Miyamoto - 0x14
- HJ - 0x11
- Nirvana - 0x15
- KL - 0x13
- Gain - 0x12
- Chitta - 0x10
- Bulgin - 0xF
Frailty (negative weight)
- Bulgin - 0x5
- HJ - 0x06
- KL - 0x7
- Gain - 0x8
- Miyamoto - 0x9
- Borrnam - 0xA
- Chitta - 0xB
- Nirvana - 0x0C
Memory addresses
RAM
10056E - 16 - per frame score accumulator (dumped every frame into a player's score)
10058c - 16 - temp rank
10058E - 16 - base rank
1006C7 - 16 - enemy HP (array slot 1?)
1006C7 - 16 - current level selection and state
1012ee - 16 - charge count to activate booster (player holding down shot button)
1012f0 - 16 - amount needed to activate booster
101324 - 8 - p1 ship movement speed
101325 - 8 - p1 ship frailty
1016AA - obj- base of enemy racer obj (slot 1?)
1016AA - 16 - relative offset (from somewhere) to enemy racer script. 2A9A = chitta, 2BBA = miyamoto
102c4a - obj- base of data object
102c5c - 16 - current position of background layer / level position
102c8e - 16 - current maximum speed limit of scrolling
102c88 - 32 - current logical position in level (goal line progress)
102c90 - 16 - current minimum possible speed of screen scroll
102dcd - 16 - current rate of change (used for passing to scroll speed modifier function)
ROM
71890 - 16 - Nirvana booster time (0x46)
71892 - 16 - Nirvana booster speed (8)
Program
001C46 - function that converts and displays bcd onto the screen
005A08 - the code that doubles pre-bcd score value
007af6 - somewhere in player init function - sets booster time for p1 (1012ee)
009694 - sets argument for function (booster boost amount)
011634 - calls racer speed update?
018830 -
018890 - writes to current player scroll speed during booster use
Mechanics
Score doubling
Enemy point values, data entry'd as if they were decimals (actually hexadecimal) -> double (still hex) -> convert to BCD by adding each byte with BCD arithmetic (68k abcd instruction) -> display as decimal on screen.
200pt -> 0x200 -> double -> 0x400 -> convert to BCD -> 400
300pt -> 0x300 -> double -> 0x600 -> convert to BCD -> 600
400pt -> 0x400 -> double -> 0x800 -> convert to BCD -> 800
500pt -> 0x500 -> double -> 0xA00 -> convert to BCD -> 1000
600pt -> 0x600 -> double -> 0xC00 -> convert to BCD -> 1200
700pt -> 0x700 -> double -> 0xE00 -> convert to BCD -> 1400
800pt -> 0x800 -> double -> 0x1000 -> convert to BCD -> 1000
900pt -> 0x900 -> double -> 0x1200 -> convert to BCD -> 1200
950pt -> 0x950 -> double -> 0x12A0 -> convert to BCD -> 1300
(the game doesn't have any enemies around base score 0xA00 - 0xF00)
1000pt -> 0x1000 -> double -> 0x2000 -> convert to BCD -> 2000
Kingdom Grandprix, the game where 950 X 2 points is less than 700 X 2 points.
Rank data
KGP
easy dip
s1: 8-4, 1
s2: 8-4, 2
s3: B-4, 4
s4: 8-4, 6
normal dip
s1: 8-4, 4
s4: A
s5: C
S6: E, E
Yashiki: 0x10, 0x10
S7: 0x14, 0x14 S6: 0x16, 0x16
hard dip
s1: 8-4, 8
S7: 0x18, 0x18
very hard dip
s1:0x14-0x10, 0x10
s2:0x18-0x12, 0x12
s3:0x1A-0x18, 0x14
s5: 0x16
S7: 0x20, 0x20
SMD
easy dip
s1: 5, 1
s2: 5, 3
normal dip
s1: 0xE, 8
s2: 0xB, 0xB
s5: 0x19, 0x14
s6: 0x2B 0x17
Yashiki: 0x1A
s7: 0x20
s9: 0x26
hard dip
s1: 0x10, 0x10
todo
stuff
- starting bomb
- win from stage hazards
- manual rival knockbacks
- enemy scroll despawning
- subweapon dragging for more damage
- losing on purpose
- rank breakpoints
- collecting all powerups
score
- spins
- diagonal edge spins
- spinbomb glitch
- wall spins
- upper wall & enemy brake taps
- strato sphere infinite spawn
- speedkill bosses for extra enemies
avoid
- spinglitch deactivate
- enemies despawning before awarding points
- (score) enemies dying to environmental damage
