SUCCESS!
So, OK, if you want, you can skip past all the BS that follows and just download the patch linked herein (apply to an un-headered 1.1 US ROM), but for those interested in the process involved in creating the patch, here goes...
So, as previously mentioned, the sprite data are loaded into VRAM from RAM beginning at 00:0300. The data at 300 are loaded from a couple of different banks in the 12- and 130000s (LoROM... exact location I did not record, and is kinda irrelevant here). The values here are constantly refreshed to control the constantly moving planets, moons and sun. In order to decide which sprite data to use, the game references constantly descending two-byte values beginning at 7E:2000 (I guess they figured, no battle is going on at the time, so why not use this RAM?). A separate routine controls the descent of these values, but I didn' use it at all, so again, kinda irrelevant. Each sprite ends up having four values in the RAM 300 bank. I'm pretty sure they represent x-pos, y-pos, then the standard "vhopppcc cccccccc" sprite data. Since I'm not a computer and cannot easily interpret the x,y values with any accuracy, the trick to cracking all of this was looking at the vhopppcc cccccccc bytes in conjunction with the tile spread in Tile Layer (which technically begins at ACE00, though the first two lines of tiles look like gibberish...).
So, freeze frame, compare tile values with the tile map... from there, it's just a couple of tries before you find the tiles that represent the moon you want to delete. When you want "no sprite," the game uses F0F0F0F0. I don't know why not FFFFFFFF, but eh, whatever.
First problem that arose: the "revlolving moons" don't actually make a full revolution. The sprites at any given (moon) location control half of a full revolution, then skip back to the opposite side for a second pass. Most likely, this was an easier thing to program, because one portion of RAM could be devoted to the smaller sprites (that pass behind the earth) and the other to the larger sprites (that pass in front). So, by observing the constantly descending two-byte values at 2000, I noticed that a (complete) half-revolution always begins when the (one-byte) value at 2000 equals FF. So, pick a previously unused byte (in this case, I chose 7E:2400), and make it toggle between 00 and 01 every time 2000 hits FF. Then, if 2400 = 00, blank out one moon; if 2400 = 01, blank out the other moon. Voila! full revolution!
Second problem that arose: one of the two moons (the behind moon, I think) always uses the data at 300-30F, but the other moon uses different data depending on whether the Earth is in front of or behind the Sun. I originally thought this was because of the moons, but now I think it's actually because of the size of the earth. Anyway, doesn't matter really.
So, I had to figure out 1) exactly where in the 300 bank the changing moon's sprites were located in both situations, and 2) what other predictable values in RAM (in the constantly-rotating 2000 area) I could use to tell the game which of those locations to blank out.
Over the course of the full visual effect, the moons make eleven full revolutions (or, more appropriately, 22 half-revolutions) around the earth. So, I had already made my life easier by setting up that alternating byte at 2400. I set a breakpoint to 2400 and recorded the values at 2000 for each (only the first 12 bytes do anything at all, so that's what's shown here):
FIRST CHANGE:
FF 00 FF FF FF 00 53 01 F3 02 80 01
SECOND CHANGE:
FF FF FF FE BF 00 13 01 B3 02 80 01
THIRD CHANGE:
FF FE FF FD 7F 00 D3 00 73 02 80 01
FOURTH CHANGE:
FF FD FF FC 3F 00 93 00 33 02 80 01
FIFTH CHANGE: (GOES BAD HERE)
FF FC FF FB FF FF 53 00 F3 01 80 01
SIXTH CHANGE:
FF FB FF FA DF FF 33 00 D3 01 80 01
SEVENTH CHANGE:
FF FA FF F9 BF FF 13 00 B3 01 80 01
EIGHTH CHANGE:
FF F9 FF F8 9F FF F3 FF 93 01 80 01
NINTH CHANGE:
FF F8 FF F7 7F FF D3 FF 73 01 80 01
TENTH CHANGE:
FF F7 FF F6 5F FF B3 FF 53 01 80 01
ELEVENTH CHANGE: (FINISHES PASS BEHIND SUN)
FF F6 FF F5 3F FF 93 FF 33 01 80 01
TWELFTH CHANGE:
FF F5 FF F4 1F FF 73 FF 13 01 80 01
THIRTEENTH CHANGE: (WILL REAPPEAR IN FRONT OF SUN)
FF F4 FF F3 FF FE 52 FF F3 00 80 01
FOURTEENTH CHANGE:
FF F3 FF F2 BF FE 13 FF B3 00 80 01
FIFTEENTH CHANGE:
FF F2 FF F1 7F FE D3 FE 73 00 80 01
SIXTEENTH CHANGE:
FF F1 FF F0 3F FE 93 FE 33 00 80 01
SEVENTEENTH CHANGE: (GOES BAD HERE)
FF F0 FF EF FF FD 53 FE F3 FF 80 01
EIGHTEENTH CHANGE:
FF EF FF EE DF FD 33 FE D3 FF 80 01
NINETEENTH CHANGE:
FF EE FF ED BF FD 13 FE B3 FF 80 01
TWENTIETH CHANGE:
FF ED FF EC 9F FD F3 FD 93 FF 80 01
TWENTY-FIRST CHANGE:
FF EC FF EB 7F FD D3 FD 73 FF 80 01
TWENTY-SECOND CHANGE:
FF EB FF EA 5F FD B3 FD 53 FF 80 01
After analyzing these data, what I noticed was, whenever the earth and moons are behind the sun (or at least, out of view), the lowest bit at 2009 is 1, and whenever the earth and moons are visible in front of the sun, the lowest bit at 2009 is 0.
So then, the path was clear: load 2009; AND 01; if A = 00, do one thing, if A = 01, do the other.
So, here are the routines...
load 301,x (the y-pos byte):
$13/DA95 20 E0 F7 JSR $F7E0 [$13:F7E0] A:005C X:00B4 Y:0004 D:0000 DB:7E S:02D1 P:envMxdIzc HC:0776 VC:019 FC:21 I:00
~~~~~~~~~~~~~~~~~~
$13/F7E0 48 PHA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0026 VC:000 FC:09 I:00
$13/F7E1 20 80 F8 JSR $F880 [$00:F880] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0042 VC:000 FC:09 I:00
$13/F7E4 D0 06 BNE $06 [$F7EC] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0058 VC:000 FC:09 I:00
$13/F7E6 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0074 VC:000 FC:09 I:00
$13/F7E7 20 60 F8 JSR $F860 [$00:F860] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0090 VC:000 FC:09 I:00
$13/F7EA 80 04 BRA $04 [$F7F0] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0106 VC:000 FC:09 I:00
$13/F7EC 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0122 VC:000 FC:09 I:00
$13/F7ED 20 70 F8 JSR $F870 [$00:F870] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0138 VC:000 FC:09 I:00
$13/F7F0 99 01 03 STA $0301,y[$00:0301] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0154 VC:000 FC:09 I:00
$13/F7F3 60 RTS A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0170 VC:000 FC:09 I:00
Load 300,x (The x-pos byte):
$13/DAA9 20 00 F8 JSR $F800 [$13:F800] A:00DC X:00B4 Y:0004 D:0000 DB:7E S:02D1 P:eNvMxdIzc HC:0498 VC:020 FC:21 I:00
~~~~~~~~~~~~~~~~~~
$13/F800 48 PHA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0186 VC:000 FC:09 I:00
$13/F801 AD 00 24 LDA $2400 [$00:2400] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0202 VC:000 FC:09 I:00
$13/F804 D0 06 BNE $06 [$F80C] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0218 VC:000 FC:09 I:00
$13/F806 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0234 VC:000 FC:09 I:00
$13/F807 20 60 F8 JSR $F860 [$00:F860] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0250 VC:000 FC:09 I:00
$13/F80A 80 04 BRA $04 [$F810] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0266 VC:000 FC:09 I:00
$13/F80C 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0282 VC:000 FC:09 I:00
$13/F80D 20 70 F8 JSR $F870 [$00:F870] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0298 VC:000 FC:09 I:00
$13/F810 99 00 03 STA $0300,y[$00:0300] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0314 VC:000 FC:09 I:00
$13/F813 60 RTS A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0330 VC:000 FC:09 I:00
Load 302,x (Sprite Byte 1):
$13/DAB0 20 20 F8 JSR $F820 [$13:F820] A:0036 X:00B4 Y:0004 D:0000 DB:7E S:02D1 P:envMxdIzc HC:1088 VC:020 FC:21 I:00
~~~~~~~~~~~~~~~~~~
$13/F820 48 PHA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0346 VC:000 FC:09 I:00
$13/F821 AD 00 24 LDA $2400 [$00:2400] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0362 VC:000 FC:09 I:00
$13/F824 D0 06 BNE $06 [$F82C] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0378 VC:000 FC:09 I:00
$13/F826 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0394 VC:000 FC:09 I:00
$13/F827 20 60 F8 JSR $F860 [$00:F860] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0410 VC:000 FC:09 I:00
$13/F82A 80 04 BRA $04 [$F830] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0426 VC:000 FC:09 I:00
$13/F82C 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0442 VC:000 FC:09 I:00
$13/F82D 20 70 F8 JSR $F870 [$00:F870] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0458 VC:000 FC:09 I:00
$13/F830 99 02 03 STA $0302,y[$00:0302] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0474 VC:000 FC:09 I:00
$13/F833 60 RTS A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0490 VC:000 FC:09 I:00
Load 303,x (Sprite Byte 2):
$13/DAC5 20 40 F8 JSR $F840 [$13:F840] A:0002 X:00B4 Y:0004 D:0000 DB:7E S:02D1 P:envMxdIzc HC:0434 VC:021 FC:21 I:00
~~~~~~~~~~~~~~~~~~
$13/F840 48 PHA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0506 VC:000 FC:09 I:00
$13/F841 AD 00 24 LDA $2400 [$00:2400] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0522 VC:000 FC:09 I:00
$13/F844 D0 06 BNE $06 [$F84C] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0538 VC:000 FC:09 I:00
$13/F846 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0554 VC:000 FC:09 I:00
$13/F847 20 60 F8 JSR $F860 [$00:F860] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0570 VC:000 FC:09 I:00
$13/F84A 80 04 BRA $04 [$F850] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0586 VC:000 FC:09 I:00
$13/F84C 68 PLA A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0602 VC:000 FC:09 I:00
$13/F84D 20 70 F8 JSR $F870 [$00:F870] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0618 VC:000 FC:09 I:00
$13/F850 99 03 03 STA $0303,y[$00:0303] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0634 VC:000 FC:09 I:00
$13/F853 60 RTS A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0650 VC:000 FC:09 I:00
Toggle the byte at 2400, and change which values are blanked out when 2400 = 01:
$13/F880 AD 00 20 LDA $2000 [$00:2000] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0826 VC:000 FC:09 I:00
$13/F883 C9 FF CMP #$FF A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0842 VC:000 FC:09 I:00
$13/F885 D0 2A BNE $2A [$F8B1] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0858 VC:000 FC:09 I:00
$13/F887 C0 00 00 CPY #$0000 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0874 VC:000 FC:09 I:00
$13/F88A D0 25 BNE $25 [$F8B1] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0890 VC:000 FC:09 I:00
$13/F88C AD 00 24 LDA $2400 [$00:2400] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0906 VC:000 FC:09 I:00
$13/F88F 49 01 EOR #$01 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0922 VC:000 FC:09 I:00
$13/F891 8D 00 24 STA $2400 [$00:2400] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0938 VC:000 FC:09 I:00
$13/F894 AD 09 20 LDA $2009 [$00:2009] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0954 VC:000 FC:09 I:00
$13/F897 29 01 AND #$01 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0970 VC:000 FC:09 I:00
$13/F899 D0 0C BNE $0C [$F8A7] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0986 VC:000 FC:09 I:00
$13/F89B A9 8C LDA #$8C A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1002 VC:000 FC:09 I:00
$13/F89D 8D 01 24 STA $2401 [$00:2401] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1018 VC:000 FC:09 I:00
$13/F8A0 A9 9C LDA #$9C A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1034 VC:000 FC:09 I:00
$13/F8A2 8D 03 24 STA $2403 [$00:2403] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1050 VC:000 FC:09 I:00
$13/F8A5 80 0A BRA $0A [$F8B1] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1066 VC:000 FC:09 I:00
$13/F8A7 A9 20 LDA #$20 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1082 VC:000 FC:09 I:00
$13/F8A9 8D 01 24 STA $2401 [$00:2401] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1098 VC:000 FC:09 I:00
$13/F8AC A9 30 LDA #$30 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1114 VC:000 FC:09 I:00
$13/F8AE 8D 03 24 STA $2403 [$00:2403] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1130 VC:000 FC:09 I:00
$13/F8B1 AD 00 24 LDA $2400 [$00:2400] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1146 VC:000 FC:09 I:00
$13/F8B4 60 RTS A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:1162 VC:000 FC:09 I:00
Blank out 300-30F if 2400 = 00:
$13/F860 C0 10 00 CPY #$0010 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0666 VC:000 FC:09 I:00
$13/F863 B0 02 BCS $02 [$F867] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0682 VC:000 FC:09 I:00
$13/F865 A9 F0 LDA #$F0 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0698 VC:000 FC:09 I:00
$13/F867 60 RTS A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0714 VC:000 FC:09 I:00
Blank out other (alternating) range if 2400 = 01:
$13/F870 CC 01 24 CPY $2401 [$00:2401] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0730 VC:000 FC:09 I:00
$13/F873 90 07 BCC $07 [$F87C] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0746 VC:000 FC:09 I:00
$13/F875 CC 03 24 CPY $2403 [$00:2403] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0762 VC:000 FC:09 I:00
$13/F878 B0 02 BCS $02 [$F87C] A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0778 VC:000 FC:09 I:00
$13/F87A A9 F0 LDA #$F0 A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0794 VC:000 FC:09 I:00
$13/F87C 60 RTS A:0010 X:000F Y:0000 D:0600 DB:00 S:02F7 P:envMxdiZc HC:0810 VC:000 FC:09 I:00
So there you have it - One Moon in the Mysidian Legend IN SPACE visual effect!