Difference between revisions of "User:1ccsDontMatter/notes"

From Shmups Wiki -- The Digital Library of Shooting Games
Jump to navigation Jump to search
 
(24 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= Data =  
 
= Data =  
 
Data taken from stage 1 and air circus (rates are different on different stages)
 
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 ==
 
== Base acceleration ==
 
* Borrnam - 2, 4 booster
 
* Borrnam - 2, 4 booster
Line 12: Line 18:
 
== Boost activation ==
 
== Boost activation ==
 
* Borrnam - 0x3c
 
* Borrnam - 0x3c
 +
* Nirvana - 0x46
 
* Miyamoto - 0x50
 
* Miyamoto - 0x50
 +
* Gain - 0x5A
 +
* Chitta - 0x64
 
* HJ - 0x6E
 
* HJ - 0x6E
* Nirvana - 0x46
 
 
* KL - 0x78
 
* KL - 0x78
* Gain - 0x5A
 
* Chitta - 0x64
 
 
* Bulgin - 0x97
 
* Bulgin - 0x97
 +
 
== Back brake ==
 
== Back brake ==
 
* Borrnam - -8 per frame
 
* Borrnam - -8 per frame
Line 47: Line 54:
 
* Bulgin - 0xF
 
* Bulgin - 0xF
 
== Frailty (negative weight) ==
 
== Frailty (negative weight) ==
* Borrnam - 0xA
+
* Bulgin - 0x5
* Miyamoto - 0x9
 
 
* HJ - 0x06
 
* HJ - 0x06
* Nirvana - 0x0C
 
 
* KL - 0x7
 
* KL - 0x7
 
* Gain - 0x8
 
* Gain - 0x8
 +
* Miyamoto - 0x9
 +
* Borrnam - 0xA
 
* Chitta - 0xB
 
* Chitta - 0xB
* Bulgin - 0x5
+
* 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)
  
Line 66: Line 83:
  
 
101325 - 8 - p1 ship frailty
 
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 75: Line 96:
 
102c88 - 32 - current logical position in level (goal line progress)
 
102c88 - 32 - current logical position in level (goal line progress)
  
102c92 - 16 - current minimum possible speed of screen scroll
+
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)
Line 86: Line 107:
  
 
==Program==
 
==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

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