Compare commits
10 Commits
a89de9858b
...
99550e83b2
Author | SHA1 | Date |
---|---|---|
Síle Ekaterin Liszka | 99550e83b2 | |
Síle Ekaterin Liszka | 32d9ab0f91 | |
Síle Ekaterin Liszka | a8b8084fae | |
Kiyoshi Aman | e34a93c537 | |
Kiyoshi Aman | c4e5e805ce | |
Kiyoshi Aman | 1a269c177d | |
Kiyoshi Aman | b75cdf0126 | |
Kiyoshi Aman | 1c7d6e450a | |
Kiyoshi Aman | 5656f8f4ef | |
Kiyoshi Aman | 2a9df20bd1 |
|
@ -0,0 +1 @@
|
||||||
|
Síle Ekaterin Liszka <sheila@vulpine.house> Kiyoshi Aman <kiyoshi.aman@gmail.com>
|
|
@ -0,0 +1,7 @@
|
||||||
|
Copyright 2023 Síle Ekaterin Liszka
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,8 @@
|
||||||
|
0.4:
|
||||||
|
- Complete rewrite.
|
||||||
|
- Adds ability to blacklist spells.
|
||||||
|
0.3:
|
||||||
|
- GBA support!
|
||||||
|
0.2:
|
||||||
|
- Reworked learning rates. Rates overall lower.
|
||||||
|
- Majority of output moved to a spoilers file.
|
75
README.md
75
README.md
|
@ -2,6 +2,13 @@
|
||||||
|
|
||||||
Asura is a program for generating a 'four esper' challenge run for Final Fantasy 6. Only the US releases for the Super Nintendo and all official releases for the Game Boy Advance are supported.
|
Asura is a program for generating a 'four esper' challenge run for Final Fantasy 6. Only the US releases for the Super Nintendo and all official releases for the Game Boy Advance are supported.
|
||||||
|
|
||||||
|
Asura is made available under the terms of the MIT license; see `COPYING` for more information.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
* Python 3.4+
|
||||||
|
* A US release of Final Fantasy III for the Super Nintendo OR any official Game Boy Advance release of Final Fantasy VI.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
> `./main.py rom.ext [seed|None[ A,List,Of,Spells]]`
|
> `./main.py rom.ext [seed|None[ A,List,Of,Spells]]`
|
||||||
|
@ -12,52 +19,28 @@ Asura is a program for generating a 'four esper' challenge run for Final Fantasy
|
||||||
|
|
||||||
The final argument is a list of spells to prohibit. All official spell names are recognized.
|
The final argument is a list of spells to prohibit. All official spell names are recognized.
|
||||||
|
|
||||||
h2. Notes
|
## Notes
|
||||||
|
|
||||||
The spell selection mechanism uses two separate kinds of slots. The game itself supports up to five spells per esper, but for balance purposes each spell costs a number of points in the range [1,5], and each esper has 6 points to 'spend'. The following table enumerates the *current* point assignments (spells not enumerated cost one point):
|
The spell selection mechanism uses two separate kinds of slots. The game itself supports up to five spells per esper, but for balance purposes each spell costs a number of points in the range [1,5], and each esper has 6 points to 'spend'. The following table enumerates the *current* point assignments (spells not enumerated cost one point):
|
||||||
|
|
||||||
<table>
|
| Spell | Pts | Spell | Pts | Spell | Pts | Spell | Pts |
|
||||||
<thead>
|
| ------- | --- | -------- | --- | ------- | --- | ------- | --- |
|
||||||
<tr><th>Spell</th><th>Pts</th><th>Spell</th><th>Pts</th><th>Spell</th><th>Pts</th><th>Spell</th><th>Pts</th></tr>
|
| Quick | 5 | Arise | 4 | Death | 3 | Cura | 2 |
|
||||||
</thead>
|
| Ultima | 5 | Blizzaga | 4 | Graviga | 3 | Haste | 2 |
|
||||||
<tbody>
|
| Gravija | 5 | Curaga | 4 | Hastega | 3 | Raise | 2 |
|
||||||
<tr><td>Quick</td><td align="center">5</td>
|
| | | Firaga | 4 | Esuna | 3 | Reraise | 2 |
|
||||||
<td>Arise</td><td align="center">4</td>
|
| | | Meltdown | 4 | Osmose | 3 | Slow | 2 |
|
||||||
<td>Death</td><td align="center">3</td>
|
| | | Quake | 4 |
|
||||||
<td>Cura</td><td align="center">2</td></tr>
|
| | | Slowga | 4 |
|
||||||
<tr><td>Ultima</td><td align="center">5</td>
|
| | | Thundaga | 4 |
|
||||||
<td>Blizzaga</td><td align="center">4</td>
|
| | | Tornado | 4 |
|
||||||
<td>Graviga</td><td align="center">3</td>
|
| | | Flood | 4 |
|
||||||
<td>Haste</td><td align="center">2</td></tr>
|
| | | Valor | 4 |
|
||||||
<tr><td>Gravija</td><td align="center">5</td>
|
|
||||||
<td>Curaga</td><td align="center">4</td>
|
## Special Thanks
|
||||||
<td>Hastega</td><td align="center">3</td>
|
|
||||||
<td>Raise</td><td align="center">2</td></tr>
|
The following people contributed to this project:
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Firaga</td><td align="center">4</td>
|
* Lenophis: Provided the esper-gain offsets for the SNES US release.
|
||||||
<td>Esuna</td><td align="center">3</td>
|
* [ff6hacking.com](https://ff6hacking.com): Provided the esper data offsets and lists.
|
||||||
<td>Reraise</td><td align="center">2</td></tr>
|
* Can of Worms: Figured out the esper-gain offsets for the GBA releases, including the bonus content espers.
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Meltdown</td><td align="center">4</td>
|
|
||||||
<td>Osmose</td><td align="center">3</td>
|
|
||||||
<td>Slow</td><td align="center">2</td></tr>
|
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Quake</td><td align="center">4</td>
|
|
||||||
<td colspan="4"></td></tr>
|
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Slowga</td><td align="center">4</td>
|
|
||||||
<td colspan="4"></td></tr>
|
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Thundaga</td><td align="center">4</td>
|
|
||||||
<td colspan="4"></td></tr>
|
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Tornado</td><td align="center">4</td>
|
|
||||||
<td colspan="4"></td></tr>
|
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Flood</td><td align="center">4</td>
|
|
||||||
<td colspan="4"></td></tr>
|
|
||||||
<tr><td colspan="2"></td>
|
|
||||||
<td>Valor</td><td align="center">4</td>
|
|
||||||
<td colspan="4"></td></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
h1. Asura
|
|
||||||
|
|
||||||
Asura is a program for generating a 'four esper' challenge run for Final Fantasy 6. Only the US releases for the Super Nintendo and all official releases for the Game Boy Advance are supported.
|
|
||||||
|
|
||||||
h2. Usage
|
|
||||||
|
|
||||||
bq. @./main.py rom.ext [seed|None[ A,List,Of,Spells]]@
|
|
||||||
|
|
||||||
@rom.ext@ must be a ROM image of Final Fantasy III for the SNES (either revision) or Final Fantasy VI Advance (Japanese, US, or European releases).
|
|
||||||
|
|
||||||
@seed@, if passed and not 'None', uses the time as of the running of the script for the seed.
|
|
||||||
|
|
||||||
The final argument is a list of spells to prohibit. All official spell names are recognized.
|
|
||||||
|
|
||||||
h2. Notes
|
|
||||||
|
|
||||||
The spell selection mechanism uses two separate kinds of slots. The game itself supports up to five spells per esper, but for balance purposes each spell costs a number of points in the range [1,5], and each esper has 6 points to 'spend'. The following table enumerates the *current* point assignments (spells not enumerated cost one point):
|
|
||||||
|
|
||||||
|_. Spell |_. Pts |_. Spell |_. Pts |_. Spell |_. Pts |_. Spell |_. Pts |
|
|
||||||
| Quick |=. 5 | Arise |=. 4 | Death |=. 3 | Cura |=. 2 |
|
|
||||||
| Ultima |=. 5 | Blizzaga |=. 4 | Graviga |=. 3 | Haste |=. 2 |
|
|
||||||
| Gravija |=. 5 | Curaga |=. 4 | Hastega |=. 3 | Raise |=. 2 |
|
|
||||||
| | | Firaga |=. 4 | Esuna |=. 3 | Reraise |=. 2 |
|
|
||||||
| | | Meltdown |=. 4 | Osmose |=. 3 | Slow |=. 2 |
|
|
||||||
| | | Quake |=. 4 | | | | |
|
|
||||||
| | | Slowga |=. 4 | | | | |
|
|
||||||
| | | Thundaga |=. 4 | | | | |
|
|
||||||
| | | Tornado |=. 4 | | | | |
|
|
||||||
| | | Flood |=. 4 | | | | |
|
|
||||||
| | | Valor |=. 4 | | | | |
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,22 @@
|
||||||
|
# Copyright 2023 Síle Ekaterin Liszka
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
from random import seed, choice
|
from random import seed, choice
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
|
@ -1,17 +1,22 @@
|
||||||
# Copyright (C) 2019 Kiyoshi Aman
|
# Copyright 2023 Síle Ekaterin Liszka
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
# it under the terms of the GNU Affero General Public License version 3
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
# as published by the Free Software Foundation.
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful, but
|
# The above copyright notice and this permission notice shall be included in
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
# all copies or substantial portions of the Software.
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Affero General Public License for more details.
|
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
# License along with this program. If not, see
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
# <https://www.gnu.org/licenses/>.
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
from copy import copy
|
from copy import copy
|
||||||
from enum import IntEnum
|
from enum import IntEnum
|
||||||
|
|
|
@ -1,3 +1,22 @@
|
||||||
|
# Copyright 2023 Síle Ekaterin Liszka
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
from random import sample
|
from random import sample
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,22 @@
|
||||||
|
# Copyright 2023 Síle Ekaterin Liszka
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
from random import randint
|
from random import randint
|
||||||
from .data import Spell, slots, slots_gba
|
from .data import Spell, slots, slots_gba
|
||||||
|
|
|
@ -1,3 +1,22 @@
|
||||||
|
# Copyright 2023 Síle Ekaterin Liszka
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
from random import sample
|
from random import sample
|
||||||
|
|
||||||
|
|
19
main.py
19
main.py
|
@ -1,4 +1,23 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2023 Síle Ekaterin Liszka
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
from sys import argv, exit
|
from sys import argv, exit
|
||||||
from time import time
|
from time import time
|
||||||
|
|
Loading…
Reference in New Issue