Indeed that Nanostray 2 game is 'weird'.
The game runs mostly in ITCM, and "acts" like an emulator. By that I mean that, for each stage, a number of operations are executed. For exemple, some check the collision, some decrease the counters,... And all these operation could be assimilated to opcodes. In short, all the basic routines are put in a "table", and this table a) looks the same for each level and b) can be accessed using a pointer.
So here is what I did : I found the operation that makes the invincibility counter decrease (which gets set when a stage starts, or when you die), and I changed its decrease value so the invicibility would never reach 0 (and so would never end). Instead of making it decrease by 1, I made it decrease by 7 (the value starts at 0x12C (300 in decimal), so decreasing 7 from it will not make it reach 0. Plus, using 7 will make the ship being visible). This code is for TT/AR v1.54+, and it uses the 5th code type (If 32bits =) with a zeroed address (ie. with the pointer).
Code:
Invincibility
6212F39C 00000000
B212F39C 00000000
DC000000 00002EC8
50000000 00000001
00000000 00000007
D2000000 00000000
This code has been tested (and works) in Adventure, Arcade and Challenge modes. More testing might be needed (to see if the ship disappears at some point, or if the code stops to work on some stages).
And in case you wonder, such code can only be hacked using a debugger ('s emulator), not with the TT alone.
Edit :
Another table seems to be common to all stages, and seems to be at a fixed address. Among other things, it controls the laser gauge.
Code:
Unlimited Laser
52156350 0001FFFC
02156350 0002FFFC
D2000000 00000000
That codes replace "0001", which is a "sub opcode", with "0002", which is an "add opcode". That way, the laser gauge gets refilled when you use it.