The current URL is datacrystal.tcrf.net.
Castlevania II - Belmont's Revenge/Notes: Difference between revisions
(Created page with "DRACULA 1 Below: idx / address / name Unused sprite indexes are left blank Note that 74/79 (horizontal spear tip left/right) is available in all sublevels, despite being ov...") |
No edit summary |
||
(57 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
DRACULA 1 | {{notes}} | ||
== HEX tweaks == | |||
=== Initial values === | |||
VARIABLE ROM LOCATION VALUE | |||
---------------------------------------------------------- | |||
Initial lives 01AA 02 | |||
Dropping spike platform health 20F3 0A | |||
Small heart value 437E (1:437E) 01 | |||
Big heart value 43D0 (1:43D0) 05 | |||
Punagushi health 45D1 (1:45D1) 04 | |||
Forneus health 4C73 (1:4C73) 04 | |||
Plant & Cloud Castle Boss health 5761 (1:5761) 17 (written do $CC07 by routine 0:3B48) | |||
Knight health 5783 (1;5783) 04 | |||
Raven health 57F6 (1:57F6) 01 (changing this number doesn't prevent its 1-hit death, so some other parameter must be involved) | |||
Merman health 5B26 (1:5B26) 04 | |||
??? health 64D2 (1:64D2) 03 | |||
Night Stalker health 6971 (1:6971) 07 | |||
??? Castle Boss health 6F30 (1:6F30) 17 | |||
Dracula 3 Boss health 7CA5 (1:7CA5) 17 (written to $CD07 by routine 0:3B48) | |||
Initial hearts F7A2 (3:77A2) 05 (note: the initial displayed value of "05" is hardcoded using tiles 09 and 04 at addresses F7A7 and F7AA) | |||
Ax/potion throw cost 187B2 (6:47B2) 01 | |||
"10-lives" password lives 196C7 (6:56C7) 09 | |||
=== Game behavior === | |||
GAME CHANGE HEX TWEAK | |||
---------------------------------------------------------- | |||
Deactivate whip degrade Replace value 3D at 1:47D7 with 00 (DEC A is replaced with NOP, which avoids decrementing whip status $C8D1) | |||
Expert mode (enemy collision = whip degrade) Replace value C8 at 1:47C4 with 00 (in expert mode $C8A3 is set to 1, so with this tweak we bypass the $C8A3 check for nullity) | |||
=== Text data === | |||
TEXT ROM LOCATION INFO | |||
---------------------------------------------------------- | |||
Story on intro screen 19B0E (6:5B0E) DRACULA HAS ARRIVED. DRACULA IS LOOKING TO BE RE-BORN... | |||
Plant Castle name F47F (3:747F) displayed at 9C24 | |||
Crystal Castle name F48E (3:748E) displayed at 9C23 | |||
Cloud Castle name F49F (3:749F) displayed at 9C24 | |||
Rock Castle name F4AF (3:74AF) displayed at 9C24 | |||
== Password system == | |||
Passwords for the first 4 castles' completion state are stored in a lookup table at 19AA5 (6:5AA5), which contains x0F values. | |||
Additional passwords for completion of Dracula castles 1 and 2, as well as other game modes (sound test, extra lives, etc.) are hardcoded. | |||
Each password is composed of 4 symbols from a 4-symbol alphabet {empty, orb, candle, heart}. By encoding each symbol with 2 bits, a password can be represented by 8 bits = 1 byte. | |||
For instance 6E = 0110 1110 = orb/candle/heart/candle. | |||
The lookup table contains the following passwords: | |||
2F 6E BD FC 03 42 91 D0 27 66 B5 F4 0B 4A 99 D8 | |||
The routine that performs the password check is at 6:595C. If no match is found, the entered password is compared against a list of hard-coded values from 6:5967 to 6:597E: | |||
Sound test FF = 1111 1111 = 3333 = heart / heart / heart / heart | |||
Dracula level 2 E5 = 1110 0101 = 3211 = heart / candle / orb / orb | |||
Dracula level 3 7B = 0111 1011 = 1323 = orb / heart / candle / heart | |||
10 lives AF = 1010 1111 = 2233 = candle / candle / heart / heart | |||
Expert mode 11 = 0001 0001 = 0101 = empty / orb / empty / orb | |||
== Sprites == | |||
=== Plant Castle sprites === | |||
Sprite pointers written to $DF00-$DFFF (x80 slots). | |||
First column is the index, second is the pointer, third is a description of the sprite. | |||
1-1 and 1-2: x1D sprites from 3:40EE to $DFBA (5D-79) | |||
5D 4595 (1-2) Eyeball front | |||
5E 459C (1-2) Eyeball front down | |||
5F 45A3 (1-2) Eyeball down | |||
60 45AB (1-2) Eyeball back down | |||
61 45B4 (1-2) Eyeball back | |||
62 45BD (1-2) Eyeball back up | |||
63 45C6 (1-2) Eyeball up | |||
64 45CF (1-2) Eyeball front up | |||
65 45D8 | |||
66 45DF | |||
67 45E6 | |||
68 4250 | |||
69 45E6 | |||
6A 45E6 | |||
6B 4616 | |||
6C 461A | |||
6D 4622 | |||
6E 4629 | |||
6F 4633 | |||
70 463B | |||
71 4648 | |||
72 4652 | |||
73 465F | |||
74 4E0A | |||
75 466F | |||
76 467F | |||
77 468F | |||
78 4696 | |||
79 4E0E | |||
(sprites below were already in the data) | |||
46 44FE Rat on ground | |||
47 4505 Rat hopping | |||
40 44C1 Bat hanging upside down | |||
41 44B1 Bat wings open up | |||
42 44B9 Bat wings open down | |||
1-3 x1D sprites from 3:40BA to $DFBA (5D-79) (Note: same patch as in 1-1) | |||
5D 4560 Giant Bat wings open fully | |||
5E 456F Giant Bat wings open partially | |||
5F 457E Giant Bat wings closed partially | |||
60 4586 Giant bat upside down | |||
61 45EE | |||
62 45F8 | |||
63 4605 | |||
64 460C | |||
65 482C | |||
66 483C | |||
67 484C | |||
68 485C | |||
69 4869 | |||
6A 485C (again) | |||
6B 469A Skeleton on rope neck straight | |||
6C 46A7 Skeleton on rope arm behind | |||
6D 46B7 Skeleton on rope arm up | |||
6E 46C4 Skeleton on rope arm grabbing rope | |||
6F 46D1 Skeleton on rope arm folded | |||
70 46DE Skeleton jumping | |||
71 46EB Bone diagonal down | |||
72 46F3 Bone vertical | |||
73 46F7 Bone diagonal up | |||
74 4B11 | |||
75 4B19 | |||
76 4B21 | |||
77 4595 | |||
78 459C | |||
79 45A3 | |||
(sprites below were already in the data) | |||
4C 4517 Forneus top of head only | |||
4D 4533 Forneus gathered | |||
4E 4551 Forneus stretched going up | |||
4F 47F8 Forneus attached to ceiling | |||
50 4801 Forneus attached to ceiling inflated | |||
51 480A Forneus stretched going down | |||
1-4 x1D sprites from 3:40EE to $DFBA | |||
5D 4595 (1-2) Eyeball front | |||
5E 459C (1-2) Eyeball front down | |||
5F 45A3 (1-2) Eyeball down | |||
60 45AB (1-2) Eyeball back down | |||
61 45B4 (1-2) Eyeball back | |||
62 45BD (1-2) Eyeball back up | |||
63 45C6 (1-2) Eyeball up | |||
64 45CF (1-2) Eyeball front up | |||
65 45D8 | |||
66 45DF | |||
67 45E6 | |||
68 4250 | |||
69 45E6 | |||
6A 45E6 | |||
6B 4616 Mud man drop | |||
6C 461A Mud man puddle | |||
6D 4622 Mud man rising/collapsing from puddle head down | |||
6E 4629 Mud man rising/collapsing from puddle head up | |||
6F 4633 Mud man puddle tiny | |||
70 463B Mud man standing leg back | |||
71 4648 Mud man standing legs middle | |||
72 4652 Mud man standing leg front | |||
73 465F | |||
74 4E0A | |||
75 466F | |||
76 467F | |||
77 468F | |||
78 4696 | |||
79 4E0E | |||
1-5 (no new sprites loaded) | |||
41 44C9 Spider-Moving-1 | |||
42 44DA Spider-Moving-2 | |||
43 44D9 Spider still | |||
56 4305 Spider projectile | |||
1-6 x02 sprites loaded from 3:4129 to $DFD6 (6B-6C) | |||
6B 4309 Large orb Boss defeated | |||
6C 4871 Plant Boss spear | |||
57 4DA3 Vertical moving platform | |||
=== Dracula 1 sprites === | |||
Below: idx / address / name | Below: idx / address / name | ||
Unused sprite indexes are left blank | Unused sprite indexes are left blank | ||
Note that 74/79 ( | Note that 74/79 (Extruder tip left/right) is available in all sublevels, despite being overwritten (with itself). | ||
1-1 and 1-2 ( | 1-1 and 1-2 (no patch occurs in 1-2) patch x15 sprites from 3:41E0 to $DFD6 (6B-7F) and x0E sprites from 3:40BA to $DFBA (5D-6A) | ||
6B 4700 Night Stalker standing leg back holding boomerang | 6B 4700 Night Stalker standing leg back holding boomerang | ||
6C 4710 Night Stalker standing leg middle holding boomerang | 6C 4710 Night Stalker standing leg middle holding boomerang | ||
Line 15: | Line 192: | ||
72 4767 | 72 4767 | ||
73 4777 Night Stalker crouching arm up holding boomerang | 73 4777 Night Stalker crouching arm up holding boomerang | ||
74 4E0A (1-2) | 74 4E0A (1-2) Extruder tip left | ||
75 4797 Boomerang pointing up | 75 4797 Boomerang pointing up | ||
76 479E Boomerang pointing front | 76 479E Boomerang pointing front | ||
77 47A5 Boomerang pointing down | 77 47A5 Boomerang pointing down | ||
78 47AE Boomerang pointing back | 78 47AE Boomerang pointing back | ||
79 4E0E (1-2) | 79 4E0E (1-2) Extruder tip right | ||
7A 4787 Night Stalker crouching arm out | 7A 4787 Night Stalker crouching arm out | ||
7B 4C9F | 7B 4C9F | ||
Line 27: | Line 204: | ||
7E 4DD8 | 7E 4DD8 | ||
7F 4DF7 | 7F 4DF7 | ||
5D 4560 | 5D 4560 | ||
5E 456F | 5E 456F | ||
Line 42: | Line 219: | ||
69 485C | 69 485C | ||
6A 4869 | 6A 4869 | ||
1-3 | 1-3 patch x09 sprites from 3:40D6 to $DFD6 (6B-73) (Note: Skeleton overwrites Night Stalker, but not Boomerang and Raven) | ||
6B 469A Skeleton on rope neck straight | 6B 469A Skeleton on rope neck straight | ||
6C 46A7 Skeleton on rope arm behind | 6C 46A7 Skeleton on rope arm behind | ||
6D 46B7 Skeleton on rope arm | 6D 46B7 Skeleton on rope arm up | ||
6E 46C4 Skeleton on rope arm grabbing rope | 6E 46C4 Skeleton on rope arm grabbing rope | ||
6F 46D1 Skeleton on rope arm folded | 6F 46D1 Skeleton on rope arm folded | ||
Line 54: | Line 230: | ||
72 46F3 Bone vertical | 72 46F3 Bone vertical | ||
73 46F7 Bone diagonal up | 73 46F7 Bone diagonal up | ||
1-4 | 1-4 patch x10 sprites from 3:41E0 to $DFD6 (6B-7A) (Note: overwrite Skeleton & Bone with 1-1 sprites) | ||
6B 4700 Night Stalker standing leg back holding boomerang | 6B 4700 Night Stalker standing leg back holding boomerang | ||
6C 4710 Night Stalker standing leg middle holding boomerang | 6C 4710 Night Stalker standing leg middle holding boomerang | ||
Line 66: | Line 241: | ||
72 4767 | 72 4767 | ||
73 4777 Night Stalker crouching arm up holding boomerang | 73 4777 Night Stalker crouching arm up holding boomerang | ||
74 4E0A | 74 4E0A Extruder tip left | ||
75 4797 Boomerang pointing up | 75 4797 Boomerang pointing up | ||
76 479E Boomerang pointing | 76 479E Boomerang pointing front | ||
77 47A5 Boomerang pointing down | 77 47A5 Boomerang pointing down | ||
78 47AE Boomerang pointing | 78 47AE Boomerang pointing back | ||
79 4E0E | 79 4E0E Extruder tip right | ||
7A 4787 Night Stalker crouching arm out | 7A 4787 Night Stalker crouching arm out | ||
1-5 | 1-5 patch x0F sprites from 3:410A to $DFD6 (6B-79) (Note: overwrites Night Stalker and Boomerang with Mud Man) | ||
6B 4616 Mud man drop | 6B 4616 Mud man drop | ||
6C 461A Mud man puddle | 6C 461A Mud man puddle | ||
Line 91: | Line 265: | ||
78 47AE | 78 47AE | ||
79 4E0E | 79 4E0E | ||
Snake Boss patch x0E sprites from 3:41CA to $DFBA to $DFD5 (5D-69) (Note: overwrites Mud Man) | |||
5D 4FA0 | |||
5E 4FA0 mouth open (same sprite as above, but slot 5D isn't used) | |||
5F 4FA7 mouth closed | |||
60 4FAE Head for mouth open | |||
61 4FB8 Head for mouth closed | |||
62 4FC2 Neck | |||
63 4FC2 Neck (same sprite, but both 63 and 62 are used) | |||
64 4FCF Body element | |||
65 4FD9 Body element inflated | |||
66 4FE3 Tail body element | |||
67 4FED Tail element | |||
68 4700 | |||
69 471D | |||
{{Internal Data|game=Castlevania II - Belmont's Revenge}} | |||
Latest revision as of 13:16, 24 January 2024
The following article is a Notes Page for Castlevania II - Belmont's Revenge.
HEX tweaks
Initial values
VARIABLE ROM LOCATION VALUE ---------------------------------------------------------- Initial lives 01AA 02 Dropping spike platform health 20F3 0A Small heart value 437E (1:437E) 01 Big heart value 43D0 (1:43D0) 05 Punagushi health 45D1 (1:45D1) 04 Forneus health 4C73 (1:4C73) 04 Plant & Cloud Castle Boss health 5761 (1:5761) 17 (written do $CC07 by routine 0:3B48) Knight health 5783 (1;5783) 04 Raven health 57F6 (1:57F6) 01 (changing this number doesn't prevent its 1-hit death, so some other parameter must be involved) Merman health 5B26 (1:5B26) 04 ??? health 64D2 (1:64D2) 03 Night Stalker health 6971 (1:6971) 07 ??? Castle Boss health 6F30 (1:6F30) 17 Dracula 3 Boss health 7CA5 (1:7CA5) 17 (written to $CD07 by routine 0:3B48) Initial hearts F7A2 (3:77A2) 05 (note: the initial displayed value of "05" is hardcoded using tiles 09 and 04 at addresses F7A7 and F7AA) Ax/potion throw cost 187B2 (6:47B2) 01 "10-lives" password lives 196C7 (6:56C7) 09
Game behavior
GAME CHANGE HEX TWEAK ---------------------------------------------------------- Deactivate whip degrade Replace value 3D at 1:47D7 with 00 (DEC A is replaced with NOP, which avoids decrementing whip status $C8D1) Expert mode (enemy collision = whip degrade) Replace value C8 at 1:47C4 with 00 (in expert mode $C8A3 is set to 1, so with this tweak we bypass the $C8A3 check for nullity)
Text data
TEXT ROM LOCATION INFO ---------------------------------------------------------- Story on intro screen 19B0E (6:5B0E) DRACULA HAS ARRIVED. DRACULA IS LOOKING TO BE RE-BORN... Plant Castle name F47F (3:747F) displayed at 9C24 Crystal Castle name F48E (3:748E) displayed at 9C23 Cloud Castle name F49F (3:749F) displayed at 9C24 Rock Castle name F4AF (3:74AF) displayed at 9C24
Password system
Passwords for the first 4 castles' completion state are stored in a lookup table at 19AA5 (6:5AA5), which contains x0F values. Additional passwords for completion of Dracula castles 1 and 2, as well as other game modes (sound test, extra lives, etc.) are hardcoded.
Each password is composed of 4 symbols from a 4-symbol alphabet {empty, orb, candle, heart}. By encoding each symbol with 2 bits, a password can be represented by 8 bits = 1 byte.
For instance 6E = 0110 1110 = orb/candle/heart/candle.
The lookup table contains the following passwords:
2F 6E BD FC 03 42 91 D0 27 66 B5 F4 0B 4A 99 D8
The routine that performs the password check is at 6:595C. If no match is found, the entered password is compared against a list of hard-coded values from 6:5967 to 6:597E:
Sound test FF = 1111 1111 = 3333 = heart / heart / heart / heart Dracula level 2 E5 = 1110 0101 = 3211 = heart / candle / orb / orb Dracula level 3 7B = 0111 1011 = 1323 = orb / heart / candle / heart 10 lives AF = 1010 1111 = 2233 = candle / candle / heart / heart Expert mode 11 = 0001 0001 = 0101 = empty / orb / empty / orb
Sprites
Plant Castle sprites
Sprite pointers written to $DF00-$DFFF (x80 slots). First column is the index, second is the pointer, third is a description of the sprite.
1-1 and 1-2: x1D sprites from 3:40EE to $DFBA (5D-79) 5D 4595 (1-2) Eyeball front 5E 459C (1-2) Eyeball front down 5F 45A3 (1-2) Eyeball down 60 45AB (1-2) Eyeball back down 61 45B4 (1-2) Eyeball back 62 45BD (1-2) Eyeball back up 63 45C6 (1-2) Eyeball up 64 45CF (1-2) Eyeball front up 65 45D8 66 45DF 67 45E6 68 4250 69 45E6 6A 45E6 6B 4616 6C 461A 6D 4622 6E 4629 6F 4633 70 463B 71 4648 72 4652 73 465F 74 4E0A 75 466F 76 467F 77 468F 78 4696 79 4E0E (sprites below were already in the data) 46 44FE Rat on ground 47 4505 Rat hopping 40 44C1 Bat hanging upside down 41 44B1 Bat wings open up 42 44B9 Bat wings open down 1-3 x1D sprites from 3:40BA to $DFBA (5D-79) (Note: same patch as in 1-1) 5D 4560 Giant Bat wings open fully 5E 456F Giant Bat wings open partially 5F 457E Giant Bat wings closed partially 60 4586 Giant bat upside down 61 45EE 62 45F8 63 4605 64 460C 65 482C 66 483C 67 484C 68 485C 69 4869 6A 485C (again) 6B 469A Skeleton on rope neck straight 6C 46A7 Skeleton on rope arm behind 6D 46B7 Skeleton on rope arm up 6E 46C4 Skeleton on rope arm grabbing rope 6F 46D1 Skeleton on rope arm folded 70 46DE Skeleton jumping 71 46EB Bone diagonal down 72 46F3 Bone vertical 73 46F7 Bone diagonal up 74 4B11 75 4B19 76 4B21 77 4595 78 459C 79 45A3 (sprites below were already in the data) 4C 4517 Forneus top of head only 4D 4533 Forneus gathered 4E 4551 Forneus stretched going up 4F 47F8 Forneus attached to ceiling 50 4801 Forneus attached to ceiling inflated 51 480A Forneus stretched going down 1-4 x1D sprites from 3:40EE to $DFBA 5D 4595 (1-2) Eyeball front 5E 459C (1-2) Eyeball front down 5F 45A3 (1-2) Eyeball down 60 45AB (1-2) Eyeball back down 61 45B4 (1-2) Eyeball back 62 45BD (1-2) Eyeball back up 63 45C6 (1-2) Eyeball up 64 45CF (1-2) Eyeball front up 65 45D8 66 45DF 67 45E6 68 4250 69 45E6 6A 45E6 6B 4616 Mud man drop 6C 461A Mud man puddle 6D 4622 Mud man rising/collapsing from puddle head down 6E 4629 Mud man rising/collapsing from puddle head up 6F 4633 Mud man puddle tiny 70 463B Mud man standing leg back 71 4648 Mud man standing legs middle 72 4652 Mud man standing leg front 73 465F 74 4E0A 75 466F 76 467F 77 468F 78 4696 79 4E0E 1-5 (no new sprites loaded) 41 44C9 Spider-Moving-1 42 44DA Spider-Moving-2 43 44D9 Spider still 56 4305 Spider projectile 1-6 x02 sprites loaded from 3:4129 to $DFD6 (6B-6C) 6B 4309 Large orb Boss defeated 6C 4871 Plant Boss spear 57 4DA3 Vertical moving platform
Dracula 1 sprites
Below: idx / address / name Unused sprite indexes are left blank Note that 74/79 (Extruder tip left/right) is available in all sublevels, despite being overwritten (with itself). 1-1 and 1-2 (no patch occurs in 1-2) patch x15 sprites from 3:41E0 to $DFD6 (6B-7F) and x0E sprites from 3:40BA to $DFBA (5D-6A) 6B 4700 Night Stalker standing leg back holding boomerang 6C 4710 Night Stalker standing leg middle holding boomerang 6D 471D Night Stalker standing leg front holding boomerang 6E 472D Night Stalker standing leg front raising boomerang 6F 473A Night Stalker standing leg back 70 474A Night Stalker standing leg middle 71 4757 Night Stalker standing leg front 72 4767 73 4777 Night Stalker crouching arm up holding boomerang 74 4E0A (1-2) Extruder tip left 75 4797 Boomerang pointing up 76 479E Boomerang pointing front 77 47A5 Boomerang pointing down 78 47AE Boomerang pointing back 79 4E0E (1-2) Extruder tip right 7A 4787 Night Stalker crouching arm out 7B 4C9F 7C 4C9F 7D 4DC5 7E 4DD8 7F 4DF7 5D 4560 5E 456F 5F 457E 60 4586 61 45EE Raven perched 62 45F8 Raven flapping wings back 63 4605 Raven flapping wings middle 64 460C Raven flapping wings front 65 482C 66 483C 67 484C 68 485C 69 485C 6A 4869 1-3 patch x09 sprites from 3:40D6 to $DFD6 (6B-73) (Note: Skeleton overwrites Night Stalker, but not Boomerang and Raven) 6B 469A Skeleton on rope neck straight 6C 46A7 Skeleton on rope arm behind 6D 46B7 Skeleton on rope arm up 6E 46C4 Skeleton on rope arm grabbing rope 6F 46D1 Skeleton on rope arm folded 70 46DE Skeleton jumping 71 46EB Bone diagonal down 72 46F3 Bone vertical 73 46F7 Bone diagonal up 1-4 patch x10 sprites from 3:41E0 to $DFD6 (6B-7A) (Note: overwrite Skeleton & Bone with 1-1 sprites) 6B 4700 Night Stalker standing leg back holding boomerang 6C 4710 Night Stalker standing leg middle holding boomerang 6D 471D Night Stalker standing leg front holding boomerang 6E 472D Night Stalker standing leg front holding boomerang above head 6F 473A Night Stalker standing leg back 70 474A Night Stalker standing leg middle 71 4757 Night Stalker standing leg front 72 4767 73 4777 Night Stalker crouching arm up holding boomerang 74 4E0A Extruder tip left 75 4797 Boomerang pointing up 76 479E Boomerang pointing front 77 47A5 Boomerang pointing down 78 47AE Boomerang pointing back 79 4E0E Extruder tip right 7A 4787 Night Stalker crouching arm out 1-5 patch x0F sprites from 3:410A to $DFD6 (6B-79) (Note: overwrites Night Stalker and Boomerang with Mud Man) 6B 4616 Mud man drop 6C 461A Mud man puddle 6D 4622 Mud man rising/collapsing from puddle head down 6E 4629 Mud man rising/collapsing from puddle head up 6F 4633 Mud man puddle tiny 70 463B Mud man standing leg back 71 4648 Mud man standing legs middle 72 4652 Mud man standing leg front 73 465F 74 4E0A 75 466F 76 467F 77 468F 78 47AE 79 4E0E Snake Boss patch x0E sprites from 3:41CA to $DFBA to $DFD5 (5D-69) (Note: overwrites Mud Man) 5D 4FA0 5E 4FA0 mouth open (same sprite as above, but slot 5D isn't used) 5F 4FA7 mouth closed 60 4FAE Head for mouth open 61 4FB8 Head for mouth closed 62 4FC2 Neck 63 4FC2 Neck (same sprite, but both 63 and 62 are used) 64 4FCF Body element 65 4FD9 Body element inflated 66 4FE3 Tail body element 67 4FED Tail element 68 4700 69 471D
Internal Data for Castlevania II - Belmont's Revenge
| |
---|---|